Foundation.Retry.Runner (foundation v0.2.1)

Copy Markdown View Source

Generic retry runner backed by Foundation.Retry.Handler.

Summary

Functions

Execute fun with retry semantics.

Types

telemetry_events()

@type telemetry_events() :: %{
  optional(:start) => [atom()],
  optional(:stop) => [atom()],
  optional(:retry) => [atom()],
  optional(:failed) => [atom()]
}

Functions

run(fun, opts \\ [])

@spec run(
  (-> result),
  keyword()
) :: {:ok, term()} | {:error, term()}
when result: term()

Execute fun with retry semantics.

Options:

  • :handler - Foundation.Retry.Handler to use
  • :config - config struct implementing to_handler_opts/1
  • :handler_opts - keyword options for Handler.new/1
  • :sleep_fun - sleep function (default: &Process.sleep/1)
  • :before_attempt - function invoked with the attempt number
  • :retry_on - function determining retry eligibility
  • :delay_fun - function to compute delay (arity 2: result, handler)
  • :max_elapsed_ms - maximum elapsed time before halting retries
  • :time_fun - time function (default: &System.monotonic_time/1)
  • :rescue_exceptions - whether to rescue exceptions (default: true)
  • :telemetry_events - map of telemetry event names
  • :telemetry_metadata - metadata merged into telemetry events