class Aws::Plugins::Retries::RetryQuota
Used in ‘standard’ and ‘adaptive’ retry modes.
@api private
def checkout_capacity(error_inspector)
-
(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)
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