liveness v1.0.0 Liveness exception

Liveness offers the eventually higher-order function, which can be used to specify liveness properties, or to busy-wait for a particular condition.

Link to this section Summary

Functions

Runs f repeatedly until f succeeds or the number of tries is reached.

Link to this section Functions

Link to this function

eventually(f, tries \\ 250, interval \\ 20)

Runs f repeatedly until f succeeds or the number of tries is reached.

Particular runs are separated in time by an interval of interval milliseconds. The interval period begins when the function begins execution. This means that if execution takes longer than interval milliseconds, the next try will be attempted immediately after f returns.

A function is deemed to have failed if it returns false or nil (a falsy value), or if it crashes (exits, raises, or :erlang.errors out).

If the function returns successfully, its return value becomes the value of the call to eventually.

If the function returns a falsy value (false or nil) upon the last try, then the Liveness exception is raised.

If the function raises an exception upon the last try, this exception is re-raised by eventually with the original stacktrace.