Method: Payjp.get_retry_delay

Defined in:
lib/payjp.rb

.get_retry_delay(retry_count, retry_initial_delay, retry_max_delay) ⇒ Object



71
72
73
74
75
76
77
78
79
# File 'lib/payjp.rb', line 71

def self.get_retry_delay(retry_count, retry_initial_delay, retry_max_delay)
  # Get retry delay seconds.
  # Based on "Exponential backoff with equal jitter" algorithm.
  # https://aws.amazon.com/jp/blogs/architecture/exponential-backoff-and-jitter/

  wait = [retry_max_delay, retry_initial_delay * 2 ** retry_count].min
  random = Random.new()
  (wait / 2) + (random.rand(wait / 2.0))
end