arbiter-worker-0.1.0.0
arbiter-worker
Safe HaskellNone
LanguageGHC2024

Arbiter.Worker.BackoffStrategy

Description

Backoff strategies for job retry delays.

Synopsis

Documentation

data BackoffStrategySource #

Strategy for calculating retry delays based on attempt count.

Constructors

Exponential ExponentialConfig

delay = base ^ attempts, for example 2s, 4s, 8s.

Linear LinearConfig

delay = increment * attempts, for example 30s, 60s, 90s.

Constant NominalDiffTime

Same delay for all attempts.

Custom (Int32 -> NominalDiffTime)

User-provided function from attempts to delay.

data JitterSource #

Jitter randomizes retry delays to spread out simultaneous retries.

Constructors

NoJitter

Use the exact calculated delay.

FullJitter

delay = random(0, calculated_delay).

EqualJitter

delay = calculated_delay / 2 + random(0, calculated_delay / 2). The default.

Instances

Instances details
Eq Jitter Source # 
Instance details

Defined in Arbiter.Worker.BackoffStrategy

Methods

(==) :: Jitter -> Jitter -> Bool#

(/=) :: Jitter -> Jitter -> Bool#

Show Jitter Source # 
Instance details

Defined in Arbiter.Worker.BackoffStrategy

data ExponentialConfigSource #

Multiplier and ceiling for exponential backoff.

Constructors

ExponentialConfig 

Fields

data LinearConfigSource #

Step and ceiling for linear backoff.

Constructors

LinearConfig 

Fields

calculateBackoff :: BackoffStrategy -> Int32 -> NominalDiffTimeSource #

The delay for a 1-indexed attempt count.

applyJitter :: Jitter -> NominalDiffTime -> IO NominalDiffTimeSource #

Apply jitter to a calculated delay.

exponentialBackoff :: Double -> NominalDiffTime -> BackoffStrategySource #

exponentialBackoff 2 300 doubles each attempt, capped at 5 minutes.

linearBackoff :: NominalDiffTime -> NominalDiffTime -> BackoffStrategySource #

linearBackoff 30 300 adds 30s per attempt, capped at 5 minutes.

constantBackoff :: NominalDiffTime -> BackoffStrategySource #

Same delay for every retry.