arbiter-worker-0.1.0.0
arbiter-worker
Safe HaskellNone
LanguageGHC2024

Arbiter.Worker.BackoffStrategy

Description

Backoff strategies for job retry delays.

Synopsis

Documentation

Source #data BackoffStrategy

Strategy for calculating retry delays based on attempt count.

Constructors

Exponential ExponentialConfig

delay = base^attempts (e.g., 2s, 4s, 8s...)

Linear LinearConfig

delay = increment * attempts (e.g., 30s, 60s, 90s...)

Constant NominalDiffTime

Same delay for all attempts

Custom (Int32 -> NominalDiffTime)

User-provided function (attempts -> delay)

Source #data Jitter

Jitter randomizes retry delays to spread out simultaneous retries.

Constructors

NoJitter

Use exact calculated delay

FullJitter

delay = random(0, calculated_delay)

EqualJitter

delay = calculated_delay2 + random(0, calculated_delay2). Recommended.

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

Source #data ExponentialConfig

Multiplier and ceiling for exponential backoff.

Constructors

ExponentialConfig 

Fields

Source #data LinearConfig

Step and ceiling for linear backoff.

Constructors

LinearConfig 

Fields

Source #calculateBackoff :: BackoffStrategy -> Int32 -> NominalDiffTime

The delay for a 1-indexed attempt count.

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

Apply jitter to a calculated delay.

Source #exponentialBackoff :: Double -> NominalDiffTime -> BackoffStrategy

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

Source #linearBackoff :: NominalDiffTime -> NominalDiffTime -> BackoffStrategy

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

Source #constantBackoff :: NominalDiffTime -> BackoffStrategy

Same delay for every retry.