class Aptible::Resource::DefaultRetryCoordinator

Constants

IDEMPOTENT_METHODS
RETRY_ERRORS

Attributes

resource[R]
retry_schedule[R]

Public Class Methods

new(resource) click to toggle source
# File lib/aptible/resource/default_retry_coordinator.rb, line 30
def initialize(resource)
  @resource = resource
  @retry_schedule = new_retry_schedule
end

Public Instance Methods

retry?(method, err) click to toggle source
# File lib/aptible/resource/default_retry_coordinator.rb, line 35
def retry?(method, err)
  # rubocop:disable Style/CaseEquality
  return false unless RETRY_ERRORS.any? { |c| c === err }
  return false unless IDEMPOTENT_METHODS.include?(method)
  retry_in = retry_schedule.shift
  return false if retry_in.nil?
  sleep retry_in
  true
  # rubocop:enable Style/CaseEquality
end

Private Instance Methods

new_retry_schedule() click to toggle source
# File lib/aptible/resource/default_retry_coordinator.rb, line 48
def new_retry_schedule
  [0.2, 0.8, 2]
end