class Baidubce::BackOffRetryPolicy
When a maximum of delay time is specified, the delay time will never exceed this limit.
Attributes
base_interval_in_millis[RW]
max_delay_in_millis[RW]
max_error_retry[RW]
Public Class Methods
new(max_error_retry=3, max_delay_in_millis=20 * 1000, base_interval_in_millis=300)
click to toggle source
# File lib/baidubce/retry_policy.rb, line 46 def initialize(max_error_retry=3, max_delay_in_millis=20 * 1000, base_interval_in_millis=300) max_error_retry_msg = "max_error_retry should be a non-negative integer." max_delay_in_millis_msg = "max_delay_in_millis should be a non-negative integer." raise BceClientException.new(max_error_retry_msg) if max_error_retry < 0 raise BceClientException.new(max_delay_in_millis_msg) if max_delay_in_millis < 0 @max_error_retry = max_error_retry @max_delay_in_millis = max_delay_in_millis @base_interval_in_millis = base_interval_in_millis end
Public Instance Methods
get_delay_before_next_retry_in_millis(retries_attempted)
click to toggle source
Returns the delay time in milliseconds before the next retry.
# File lib/baidubce/retry_policy.rb, line 85 def get_delay_before_next_retry_in_millis(retries_attempted) return 0 if retries_attempted < 0 delay_in_millis = (1 << retries_attempted) * @base_interval_in_millis return @max_delay_in_millis if delay_in_millis > @max_delay_in_millis return delay_in_millis end
should_retry(http_code, retries_attempted)
click to toggle source
Return true if the http client should retry the request.
# File lib/baidubce/retry_policy.rb, line 60 def should_retry(http_code, retries_attempted) # stop retrying when the maximum number of retries is reached return false if retries_attempted >= @max_error_retry return true if http_code.nil? # Only retry on a subset of service exceptions if http_code == 408 logger.debug('Retry for request timeout.') return true end # retry for SocketError if http_code == SOCKET_ERROR_CODE logger.debug('Retry for request SocketError.') return true end if http_code >= 500 && http_code != 501 logger.debug('Retry for server error.') return true end return false end