Module: OCI::Retry::Functions::ShouldRetryOnError
- Defined in:
- lib/oci/retry/functions/should_retry_on_error.rb
Overview
A module containing functions that can be used to determine whether to retry based on the error/exception encountered.
These functions should take a single argument of a Internal::RetryState object
Defined Under Namespace
Classes: ErrorCodeTuple
Constant Summary collapse
- DEFAULT_RETRY_MAPPING =
{ ErrorCodeTuple.new(409, 'IncorrectState') => true, ErrorCodeTuple.new(429, 'TooManyRequests') => true, ErrorCodeTuple.new(501, 'MethodNotImplemented') => false }.freeze
Class Method Summary collapse
-
.default_retry_strategy_proc ⇒ Proc
rubocop:disable Metrics/AbcSize Returns a proc which will retry on Errors::NetworkError and on Errors::ServiceError when the status code is (409, IncorrectState) and (429, TooManyRequests) or an internal server error (any HTTP 5xx except 501 MethodNotImplemented).
-
.retry_on_network_error_throttle_and_internal_server_errors ⇒ Proc
Returns a proc which will retry on Errors::NetworkError and on Errors::ServiceError when the status code indicates a throttle (HTTP 429) or an internal server error (any HTTP 5xx).
Class Method Details
.default_retry_strategy_proc ⇒ Proc
rubocop:disable Metrics/AbcSize Returns a proc which will retry on Errors::NetworkError and on Errors::ServiceError when the status code is (409, IncorrectState) and (429, TooManyRequests) or an internal server error (any HTTP 5xx except 501 MethodNotImplemented)
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/oci/retry/functions/should_retry_on_error.rb', line 42 def self.default_retry_strategy_proc lambda do |retry_state| return true if retry_state.last_exception.is_a?(OCI::Errors::NetworkError) return false unless retry_state.last_exception.is_a?(OCI::Errors::ServiceError) if DEFAULT_RETRY_MAPPING.key?(ErrorCodeTuple.new(retry_state.last_exception.status_code, retry_state.last_exception.service_code)) return DEFAULT_RETRY_MAPPING[ErrorCodeTuple.new(retry_state.last_exception.status_code, retry_state.last_exception.service_code)] end retry_state.last_exception.status_code >= 500 end # rubocop:enable Metrics/AbcSize end |
.retry_on_network_error_throttle_and_internal_server_errors ⇒ Proc
Returns a proc which will retry on Errors::NetworkError and on Errors::ServiceError when the status code indicates a throttle (HTTP 429) or an internal server error (any HTTP 5xx)
27 28 29 30 31 32 33 34 |
# File 'lib/oci/retry/functions/should_retry_on_error.rb', line 27 def self.retry_on_network_error_throttle_and_internal_server_errors lambda do |retry_state| return true if retry_state.last_exception.is_a?(OCI::Errors::NetworkError) return false unless retry_state.last_exception.is_a?(OCI::Errors::ServiceError) retry_state.last_exception.status_code == 429 || retry_state.last_exception.status_code >= 500 end end |