Class: Aws::Plugins::RetryErrors Private

Inherits:
Seahorse::Client::Plugin show all
Defined in:
lib/aws-sdk-core/plugins/retry_errors.rb

This class is part of a private API. You should avoid using this class if possible, as it may be removed or be changed in the future.

Defined Under Namespace

Classes: Handler, LegacyHandler

Constant Summary collapse

EQUAL_JITTER =

This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.

BEGIN LEGACY OPTIONS

->(delay) { (delay / 2) + Kernel.rand(0..(delay / 2)) }
FULL_JITTER =

This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.

->(delay) { Kernel.rand(0..delay) }
NO_JITTER =

This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.

->(delay) { delay }
JITTERS =

This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.

{
  none: NO_JITTER,
  equal: EQUAL_JITTER,
  full: FULL_JITTER
}
DEFAULT_BACKOFF =

This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.

lambda do |c|
  delay = 2**c.retries * c.config.retry_base_delay
  if (c.config.retry_max_delay || 0) > 0
    delay = [delay, c.config.retry_max_delay].min
  end
  jitter = c.config.retry_jitter
  jitter = JITTERS[jitter] if jitter.is_a?(Symbol)
  delay = jitter.call(delay) if jitter
  Kernel.sleep(delay)
end

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Seahorse::Client::Plugin

#add_options, #after_initialize, after_initialize, after_initialize_hooks, before_initialize, #before_initialize, before_initialize_hooks, handlers, literal, option, options

Methods included from Seahorse::Client::HandlerBuilder

#handle, #handle_request, #handle_response, #handler_for, #new_handler

Class Method Details

.resolve_adaptive_retry_wait_to_fill(cfg) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



200
201
202
203
204
205
206
207
208
209
210
211
212
# File 'lib/aws-sdk-core/plugins/retry_errors.rb', line 200

def self.resolve_adaptive_retry_wait_to_fill(cfg)
  value = ENV['AWS_ADAPTIVE_RETRY_WAIT_TO_FILL'] ||
    Aws.shared_config.adaptive_retry_wait_to_fill(profile: cfg.profile) ||
    'true'
  # Raise if provided value is not true or false
  if value != 'true' && value != 'false'
    raise ArgumentError,
      'Must provide either `true` or `false` for '\
      'adaptive_retry_wait_to_fill profile option or for '\
      'ENV[\'AWS_ADAPTIVE_RETRY_WAIT_TO_FILL\']'
  end
  value == 'true'
end

.resolve_correct_clock_skew(cfg) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



214
215
216
217
218
219
220
221
222
223
224
225
226
# File 'lib/aws-sdk-core/plugins/retry_errors.rb', line 214

def self.resolve_correct_clock_skew(cfg)
  value = ENV['AWS_CORRECT_CLOCK_SKEW'] ||
    Aws.shared_config.correct_clock_skew(profile: cfg.profile) ||
    'true'
  # Raise if provided value is not true or false
  if value != 'true' && value != 'false'
    raise ArgumentError,
      'Must provide either `true` or `false` for '\
      'correct_clock_skew profile option or for '\
      'ENV[\'AWS_CORRECT_CLOCK_SKEW\']'
  end
  value == 'true'
end

.resolve_max_attempts(cfg) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



186
187
188
189
190
191
192
193
194
195
196
197
198
# File 'lib/aws-sdk-core/plugins/retry_errors.rb', line 186

def self.resolve_max_attempts(cfg)
  value = (ENV['AWS_MAX_ATTEMPTS']) ||
          Aws.shared_config.max_attempts(profile: cfg.profile) ||
          '3'
  value = value.to_i
  # Raise if provided value is not a positive integer
  if value <= 0
    raise ArgumentError,
      'Must provide a positive integer for max_attempts profile '\
      'option or for ENV[\'AWS_MAX_ATTEMPTS\']'
  end
  value
end

.resolve_retry_mode(cfg) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
# File 'lib/aws-sdk-core/plugins/retry_errors.rb', line 167

def self.resolve_retry_mode(cfg)
  default_mode_value =
    if cfg.respond_to?(:defaults_mode_config_resolver)
      cfg.defaults_mode_config_resolver.resolve(:retry_mode)
    end

    value = ENV['AWS_RETRY_MODE'] ||
            Aws.shared_config.retry_mode(profile: cfg.profile) ||
            default_mode_value ||
            'legacy'
  # Raise if provided value is not one of the retry modes
  if value != 'legacy' && value != 'standard' && value != 'adaptive'
    raise ArgumentError,
      'Must provide either `legacy`, `standard`, or `adaptive` for '\
      'retry_mode profile option or for ENV[\'AWS_RETRY_MODE\']'
  end
  value
end

Instance Method Details

#add_handlers(handlers, config) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



423
424
425
426
427
428
429
430
431
# File 'lib/aws-sdk-core/plugins/retry_errors.rb', line 423

def add_handlers(handlers, config)
  if config.retry_mode == 'legacy'
    if config.retry_limit > 0
      handlers.add(LegacyHandler, step: :sign, priority: 99)
    end
  else
    handlers.add(Handler, step: :sign, priority: 99)
  end
end