class PostHog::BackoffPolicy
def add_jitter(base, randomization_factor)
def add_jitter(base, randomization_factor) random_number = rand max_deviation = base * randomization_factor deviation = random_number * max_deviation random_number < 0.5 ? base - deviation : base + deviation end
def initialize(opts = {})
(**opts)
-
:randomization_factor
(Numeric
) -- The randomization factor -
:multiplier
(Numeric
) -- The value to multiply the current -
:max_timeout_ms
(Numeric
) -- The maximum backoff timeout -
:min_timeout_ms
(Numeric
) -- The minimum backoff timeout
Parameters:
-
opts
(Hash
) --
def initialize(opts = {}) @min_timeout_ms = opts[:min_timeout_ms] || MIN_TIMEOUT_MS @max_timeout_ms = opts[:max_timeout_ms] || MAX_TIMEOUT_MS @multiplier = opts[:multiplier] || MULTIPLIER @randomization_factor = opts[:randomization_factor] || RANDOMIZATION_FACTOR @attempts = 0 end
def next_interval
-
(Numeric)
- the next backoff interval, in milliseconds.
def next_interval interval = @min_timeout_ms * (@multiplier**@attempts) interval = add_jitter(interval, @randomization_factor) @attempts += 1 [interval, @max_timeout_ms].min end