Skip to content
2 changes: 2 additions & 0 deletions gems/aws-sdk-core/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
Unreleased Changes
------------------

* Feature - Add YJIT & ZJIT tracking to user agent.
* Issue - Fix error messaging in SSO OIDC.
* Feature - Add `AWS_NEW_RETRIES_2026` environment variable to opt-in to updated `standard` retry mode with reduced backoff intervals.

3.246.0 (2026-04-23)
------------------
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,11 @@ module Retries
# Used in 'standard' and 'adaptive' retry modes.
class RetryQuota
INITIAL_RETRY_TOKENS = 500
RETRY_COST = 5
RETRY_COST = 14
LEGACY_RETRY_COST = 5 # TODO: Remove when new retries become default
NO_RETRY_INCREMENT = 1
TIMEOUT_RETRY_COST = 10
THROTTLING_RETRY_COST = 5
TIMEOUT_RETRY_COST = 10 # TODO: Remove when new retries become default

def initialize(opts = {})
@mutex = Mutex.new
Expand All @@ -19,15 +21,16 @@ def initialize(opts = {})
end

# check if there is sufficient capacity to retry
# and return it. If there is insufficient capacity
# and return it. If there is insufficient capacity
# return 0
# @return [Integer] The amount of capacity checked out
def checkout_capacity(error_inspector)
@mutex.synchronize do
capacity_amount = if error_inspector.networking?
TIMEOUT_RETRY_COST
# TODO: Remove gate and keep only the new_retries branch
capacity_amount = if RetryErrors.new_retries?
error_inspector.throttling_error? ? THROTTLING_RETRY_COST : RETRY_COST
else
RETRY_COST
error_inspector.networking? ? TIMEOUT_RETRY_COST : LEGACY_RETRY_COST
end

# unable to acquire capacity
Expand All @@ -39,8 +42,8 @@ def checkout_capacity(error_inspector)
end

# capacity_amount refers to the amount of capacity requested from
# the last retry. It can either be RETRY_COST, TIMEOUT_RETRY_COST,
# or unset.
# the last retry. It can either be RETRY_COST,
# THROTTLING_RETRY_COST/TIMEOUT_RETRY_COST, or unset.
def release(capacity_amount)
# Implementation note: The release() method is called for
# every API call. In the common case where the request is
Expand Down
Loading
Loading