feat(warmup): add SdkWarmUp for CRaC and Lambda SnapStart priming - #7213
Open
joviegas wants to merge 24 commits into
Open
feat(warmup): add SdkWarmUp for CRaC and Lambda SnapStart priming#7213joviegas wants to merge 24 commits into
joviegas wants to merge 24 commits into
Conversation
…t for CRaC auto-priming (#7042) * feat(sdk-core): add SdkWarmUpProvider SPI for CRaC auto-priming * Handled review comments * Add CannedResponseHttpClient for Crac/Auto priming feature
* feat(sdk-core): add SdkWarmUp.prime() for CRaC auto-priming * Update review comments * Update review comments * test(sdk-core): allowlist ClasspathWarmUpInvoker warn logs in CodingConventionWithSuppressionTest
… registration per service (#7085) * feat(codegen): generate empty SdkWarmUpProvider and META-INF/services registration per service * Update javadoc of generated wamrup to make sure we do same as exsiting specs implementation where we donot genrate javadocs for generated interfaces
… CRaC priming (#7080) * feat(sdk-core): add sync HTTP-client warm-up to SdkWarmUp.prime() for CRaC priming * Updated tests * restructure test and comments * Fixed checkstyle issues * Handled PR comments * Update test for blank input * Update before and after conditions in test
…r CRaC priming (#7092) * feat(sdk-core): add sync HTTP-client warm-up to SdkWarmUp.prime() for CRaC priming * Updated tests * restructure test and comments * Fixed checkstyle issues * Handled PR comments * Update test for blank input * Update before and after conditions in test * feat(sdk-core): add Async HTTP-client warm-up to SdkWarmUp.prime() for CRaC priming * feat(sdk-core): add Async HTTP-client warm-up to SdkWarmUp.prime() for CRaC priming * Handled PR comments
…eWarmUpProvider.warmUp() (#7101) * Initialn chages for adding Client instantiation as part of warmup * reiew 1 * Updated the SdkWarmUpProvider after design discussion * Nit picks * handled review comments and made CannedResponseHttpClient and CannedResponseAsyncHttpClient as SdkProtectedApi since they are codegenerated in service modules the architecture test fails if @SdkInternalApi is used in service modules from other modules * Add warmup-provider-query.java file * moved the Canned response out of internal package * update version in pom.xml
#7130) * Add overloaded menthod for SdkWarmUp.prime overloaded to accept specific clients that needs to be warmedUp * Updated idempotency testing * Handled cases when one warmUp provider fails in overloaded method ,so that we can retry for next prime call * Handle Review comments
…peration (#7135) * Update to give more preference to operation with outputs * Handle review comments
…ted SdkWarmUpProvider (#7159) * Update to give more preference to operation with outputs * Handle review comments * feat(codegen): invoke selected warm-up operation in generated SdkWarmUpProvider
…all and warm sync/async clients independently (#7183) * feat(codegen): fill URI/endpoint-bound members for the CRaC warm-up call and warm sync/async clients independently * minor update * Handle review comments
…r of every service module (#7188) * Add test to make sure all the SDK generated services have warmUp providers and are executed withouut any errors * Handle review comments * Add customization clients * trigerring the codebuild test build to see if the codebuild time increased * fork test per jvm
…#7207) * test(sdk-benchmarks): Add cold-start benchmarks for SdkWarmUp priming * refactor(sdk-benchmarks): Unify duplicate Jetty mock servers into MockHttpServer * test(sdk-benchmarks): Add cold-start benchmarks for SdkWarmUp priming * fix checkstyle issue
…rviceClient.class...) call (#7212) * test(sdk-benchmarks): Add cold-start benchmarks for SdkWarmUp priming * refactor(sdk-benchmarks): Unify duplicate Jetty mock servers into MockHttpServer * test(sdk-benchmarks): Add cold-start benchmarks for SdkWarmUp priming * fix checkstyle issue * perf(warmup): Warm HTTP clients at most once across targeted prime call * Handle review comments
… "prime" to "warmUp" (#7232) * test(sdk-benchmarks): Add cold-start benchmarks for SdkWarmUp priming * refactor(sdk-benchmarks): Unify duplicate Jetty mock servers into MockHttpServer * test(sdk-benchmarks): Add cold-start benchmarks for SdkWarmUp priming * fix checkstyle issue * perf(warmup): Warm HTTP clients at most once across targeted prime call * Handle review comments * Update after surface api review rename crac to warmup * Update after surface api review rename crac to warmup * Update test case name to warmedUp * Update test case name to warmedUp * checkstyle fix
joviegas
force-pushed
the
feature/master/crac_auto_priming_support
branch
from
August 9, 2026 22:37
84a1723 to
56af08a
Compare
alextwoods
approved these changes
Aug 10, 2026
…#7262) * refactor(SdkWarmUp): Rename remaining warm-up 'prime' terminology to 'warmUp' * refactor(SdkWarmUp): Rename the warm-up JMH benchmark methods from prime to warmUp
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Motivation and Context
Customers using Lambda SnapStart or CRaC (Coordinated Restore at Checkpoint) write their own priming code today to warm the SDK request path before a checkpoint. That code is non-obvious: the customer picks an operation, supplies dummy credentials, and suppresses the resulting errors.
SdkWarmUp.warmUp()moves that work into the SDK: it selects the operation for each service, supplies the credentials, and logs failures instead of throwing.Addresses #5387. Related: #3801, #3236, #3737.
Modifications
Individuals PRs at the bottom.
Public API (
sdk-core,software.amazon.awssdk.core.warmup):Every service module on the classpath is warmed, including service modules added after this release.
Warm-up runs one synthetic operation per client against an in-memory canned-response HTTP client (dummy credentials,
Region.US_EAST_1,endpointOverride(http://localhost)), exercising marshalling, signing, interceptors, and unmarshalling with no network I/O. It then sends one best-effort unauthenticatedGETto the regional STS endpoint per HTTP client on the classpath, because DNS, TLS handshake, and certificate-chain paths need a real connection.Usage
Lambda SnapStart. Lambda snapshots the JVM after the constructor completes, so call
warmUp()there:Standalone CRaC. Call
warmUp()before the checkpoint:Warm specific clients when the classpath holds more service modules than the application calls:
A sync client class warms the sync path and the sync HTTP clients on the classpath; an async client class warms the async path and the async HTTP clients.
Warm-up is opt-in and runs at most once per JVM. Ships in 2.52.0.
Testing
test/warmup-testsmodule.Screenshots (if appropriate)
Types of changes
License
Individual PRs