| Safe Haskell | None |
|---|---|
| Language | GHC2024 |
Arbiter.Worker.BackoffStrategy
Description
Backoff strategies for job retry delays.
Synopsis
- data BackoffStrategy
- data Jitter
- data ExponentialConfig = ExponentialConfig {}
- data LinearConfig = LinearConfig {}
- calculateBackoff :: BackoffStrategy -> Int32 -> NominalDiffTime
- applyJitter :: Jitter -> NominalDiffTime -> IO NominalDiffTime
- exponentialBackoff :: Double -> NominalDiffTime -> BackoffStrategy
- linearBackoff :: NominalDiffTime -> NominalDiffTime -> BackoffStrategy
- constantBackoff :: NominalDiffTime -> BackoffStrategy
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) |
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
Source #data ExponentialConfig
Multiplier and ceiling for exponential backoff.
Constructors
| ExponentialConfig | |
Fields
| |
Instances
| Eq ExponentialConfig Source # | |
Defined in Arbiter.Worker.BackoffStrategy Methods #(==) :: ExponentialConfig -> ExponentialConfig -> Bool #(/=) :: ExponentialConfig -> ExponentialConfig -> Bool | |
| Show ExponentialConfig Source # | |
Defined in Arbiter.Worker.BackoffStrategy Methods #showsPrec :: Int -> ExponentialConfig -> ShowS #show :: ExponentialConfig -> String #showList :: [ExponentialConfig] -> ShowS | |
Source #data LinearConfig
Step and ceiling for linear backoff.
Constructors
| LinearConfig | |
Fields
| |
Instances
| Eq LinearConfig Source # | |
Defined in Arbiter.Worker.BackoffStrategy | |
| Show LinearConfig Source # | |
Defined in Arbiter.Worker.BackoffStrategy Methods #showsPrec :: Int -> LinearConfig -> ShowS #show :: LinearConfig -> String #showList :: [LinearConfig] -> ShowS | |
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.