| 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
data BackoffStrategySource #
Strategy for calculating retry delays based on attempt count.
Constructors
| Exponential ExponentialConfig |
|
| Linear LinearConfig |
|
| Constant NominalDiffTime | Same delay for all attempts. |
| Custom (Int32 -> NominalDiffTime) | User-provided function from attempts to delay. |
Jitter randomizes retry delays to spread out simultaneous retries.
Constructors
| NoJitter | Use the exact calculated delay. |
| FullJitter |
|
| EqualJitter |
|
Instances
data ExponentialConfigSource #
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# | |
data LinearConfigSource #
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# | |
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.