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

Arbiter.Worker.BackoffStrategy

Description

Configurable backoff strategies for job retries.

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 strategy to randomize backoff delays.

Prevents thundering herd when many jobs fail simultaneously and retry at the same time.

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 LinearConfig Source #

Linear backoff configuration.

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.