class Gapic::Operation::RetryPolicy
The policy for retrying operation reloads using an incremental backoff. A new object instance should be used for every Operation
invocation.
Public Class Methods
new(initial_delay: nil, multiplier: nil, max_delay: nil, timeout: nil)
click to toggle source
Create new Operation
RetryPolicy
.
@param initial_delay
[Numeric] client-side timeout @param multiplier [Numeric] client-side timeout @param max_delay
[Numeric] client-side timeout @param timeout [Numeric] client-side timeout
# File lib/gapic/operation/retry_policy.rb, line 30 def initialize initial_delay: nil, multiplier: nil, max_delay: nil, timeout: nil @initial_delay = initial_delay @multiplier = multiplier @max_delay = max_delay @timeout = timeout @delay = nil end
Public Instance Methods
call()
click to toggle source
# File lib/gapic/operation/retry_policy.rb, line 54 def call return unless retry? delay! increment_delay! true end
initial_delay()
click to toggle source
# File lib/gapic/operation/retry_policy.rb, line 38 def initial_delay @initial_delay || 10 end
max_delay()
click to toggle source
# File lib/gapic/operation/retry_policy.rb, line 46 def max_delay @max_delay || 300 # Five minutes end
multiplier()
click to toggle source
# File lib/gapic/operation/retry_policy.rb, line 42 def multiplier @multiplier || 1.3 end
timeout()
click to toggle source
# File lib/gapic/operation/retry_policy.rb, line 50 def timeout @timeout || 3600 # One hour end
Private Instance Methods
deadline()
click to toggle source
# File lib/gapic/operation/retry_policy.rb, line 65 def deadline # memoize the deadline @deadline ||= Time.now + timeout end
delay()
click to toggle source
The current delay value.
# File lib/gapic/operation/retry_policy.rb, line 76 def delay @delay || initial_delay end
delay!()
click to toggle source
# File lib/gapic/operation/retry_policy.rb, line 80 def delay! # Call Kernel.sleep so we can stub it. Kernel.sleep delay end
increment_delay!()
click to toggle source
Calculate and set the next delay value.
# File lib/gapic/operation/retry_policy.rb, line 87 def increment_delay! @delay = [delay * multiplier, max_delay].min end
retry?()
click to toggle source
# File lib/gapic/operation/retry_policy.rb, line 70 def retry? deadline > Time.now end