You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Currently observation values and not observation objects are being passed to ignore. This means it's not possible to ignore transient exceptions that occur in either candidate or control. When an exception occurs, nil is passed as value to ignore for that behavior.
Example:
e=Scientist::Experiment.new"foo"e.use{rand > 0.001 ? 42 : raiseSomeConnectionTimedOut.new}e.try{rand > 0.001 ? 42 : raiseSomeConnectionTimedOut.new}e.ignoredo |control,candidate|
# control/candidate is nil if exception occurred in that behaviorend
It would be great if ignore received an observation object instead of only the observation value. That would allow examining the exception value.
Example:
# Proposed behavior! This is currently not possible.ignoredo |control,candidate|
control.exception.is_a?(SomeConnectionTimedOut) ||
candidate.exception.is_a?(SomeConnectionTimedOut)end
I currently work around the above issue by rescuing inside try/use and return a sentinel value -- it's a terrible hack though. Would you accept a PR implementing this?
The text was updated successfully, but these errors were encountered:
@andreas 👋 Doing some long-delayed issue gardening. I like this idea, but I'm wondering how to implement it in a backwards-compatible way. We might need to do this w/a major version bump, although even there I'm reluctant to break the interface without a deprecation period.
Currently observation values and not observation objects are being passed to
ignore
. This means it's not possible to ignore transient exceptions that occur in either candidate or control. When an exception occurs,nil
is passed as value toignore
for that behavior.Example:
It would be great if
ignore
received an observation object instead of only the observation value. That would allow examining the exception value.Example:
I currently work around the above issue by rescuing inside
try
/use
and return a sentinel value -- it's a terrible hack though. Would you accept a PR implementing this?The text was updated successfully, but these errors were encountered: