class Aws::Plugins::Retries::RetryQuota

Used in ‘standard’ and ‘adaptive’ retry modes.
@api private

def checkout_capacity(error_inspector)

Returns:
  • (Integer) - The amount of capacity checked out
def checkout_capacity(error_inspector)
  @mutex.synchronize do
    capacity_amount = if error_inspector.networking?
                        TIMEOUT_RETRY_COST
                      else
                        RETRY_COST
                      end
    # unable to acquire capacity
    return 0 if capacity_amount > @available_capacity
    @available_capacity -= capacity_amount
    capacity_amount
  end
end

def initialize(opts = {})

def initialize(opts = {})
  @mutex              = Mutex.new
  @max_capacity       = opts.fetch(:max_capacity, INITIAL_RETRY_TOKENS)
  @available_capacity = @max_capacity
end

def release(capacity_amount)

or unset.
the last retry. It can either be RETRY_COST, TIMEOUT_RETRY_COST,
capacity_amount refers to the amount of capacity requested from
def release(capacity_amount)
  # Implementation note:  The release() method is called for
  # every API call.  In the common case where the request is
  # successful and we're at full capacity, we can avoid locking.
  # We can't exceed max capacity so there's no work we have to do.
  return if @available_capacity == @max_capacity
  @mutex.synchronize do
    @available_capacity += capacity_amount || NO_RETRY_INCREMENT
    @available_capacity = [@available_capacity, @max_capacity].min
  end
end