Module: CMDx::Retriers::Exponential Private
Overview
This module is part of a private API. You should avoid using this module if possible, as it may be removed or be changed in the future.
Exponential backoff. Doubles the base delay every attempt: ‘delay * (2 ** attempt)`. The shift is saturated at MAX_SHIFT to keep the math (and resulting sleep) bounded; pair with `:max_delay` to set the true upper bound.
Constant Summary collapse
- MAX_SHIFT =
This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.
Hard cap on the doubling exponent. ‘2 ** 30 ≈ 1.07e9` so paired with any sensible base delay the unclamped result is large enough to be noticed but never blows up into Bignum allocations or `Infinity`.
30
Instance Method Summary collapse
-
#call(attempt, delay, _prev_delay = nil) ⇒ Float
private
Computed delay.
Instance Method Details
#call(attempt, delay, _prev_delay = nil) ⇒ Float
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Returns computed delay.
24 25 26 27 |
# File 'lib/cmdx/retriers/exponential.rb', line 24 def call(attempt, delay, _prev_delay = nil) shift = [attempt, MAX_SHIFT].min delay * (1 << shift) end |