arbiter-worker-0.1.0.0: Worker framework for arbiter
Safe HaskellNone
LanguageGHC2024

Arbiter.Worker.BackoffStrategy

Description

Backoff strategies for job retry delays.

Synopsis

Documentation

data BackoffStrategy Source #

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)

data Jitter Source #

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
Show Jitter Source # 
Instance details

Defined in Arbiter.Worker.BackoffStrategy

Eq Jitter Source # 
Instance details

Defined in Arbiter.Worker.BackoffStrategy

Methods

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

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

data ExponentialConfig Source #

Constructors

ExponentialConfig 

Fields

data LinearConfig Source #

Constructors

LinearConfig 

Fields

Instances

Instances details
Show LinearConfig Source # 
Instance details

Defined in Arbiter.Worker.BackoffStrategy

Eq LinearConfig Source # 
Instance details

Defined in Arbiter.Worker.BackoffStrategy

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

Calculate backoff delay for given attempt count (1-indexed).

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

Apply jitter to a calculated delay.

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

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

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

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

constantBackoff :: NominalDiffTime -> BackoffStrategy Source #

Same delay for every retry.