Skip to content
Open
Show file tree
Hide file tree
Changes from 9 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions build_tools/services.rb
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,10 @@ class ServiceEnumerator
MANIFEST_PATH = File.expand_path('../../services.json', __FILE__)

# Minimum `aws-sdk-core` version for new gem builds
MINIMUM_CORE_VERSION = "3.247.0"
MINIMUM_CORE_VERSION = "3.248.0"
Copy link
Copy Markdown
Contributor Author

@richardwang1124 richardwang1124 May 12, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Note to self to check this before merging.


# Minimum `aws-sdk-core` version for new S3 gem builds
MINIMUM_CORE_VERSION_S3 = "3.247.0"
MINIMUM_CORE_VERSION_S3 = "3.248.0"

EVENTSTREAM_PLUGIN = "Aws::Plugins::EventStreamConfiguration"

Expand Down
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 new retry behavior behind `AWS_NEW_RETRIES_2026` environment variable. When enabled, defaults to `standard` retry mode, service-specific tuning for DynamoDB, long-polling backoff support, and `x-amz-retry-after` header support.
Comment thread
jterapin marked this conversation as resolved.
Outdated

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