Skip to content

Conversation

trivikr
Copy link
Member

@trivikr trivikr commented Aug 21, 2025

Issue

Description

Adds an integration test which confirms checksum is not recomputed on retries

Testing

  • CI
  • ToDo: Dry run is successful

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

@trivikr
Copy link
Member Author

trivikr commented Aug 21, 2025

Integration test still fails in dry run

 FAIL  packages/middleware-flexible-checksums/src/middleware-flexible-checksums.retry.integ.spec.ts > middleware-flexible-checksums.retry > retry reuses the checksum
AssertionError: expected +0 to deeply equal 1

- Expected
+ Received

- 1
+ 0

 ❯ packages/middleware-flexible-checksums/src/middleware-flexible-checksums.retry.integ.spec.ts:57:29
     55| 
     56|     // Validate that flexibleChecksumsMiddleware is called once.
     57|     expect(flexChecksCalls).toEqual(1);
       |                             ^
     58|     // Validate that retryMiddleware is called maxAttempts times.
     59|     expect(retryMiddlewareCalls).toEqual(maxAttempts);

@trivikr
Copy link
Member Author

trivikr commented Aug 21, 2025

After putting a bunch of debug statements, it appears like middleware are added in the stack in dry run, but they're not called

Logs show stack on resolve with anonymous middleware after the ones we want to count

[
  'loggerMiddleware - initialize',
  'validateBucketNameMiddleware - initialize',
  'regionRedirectMiddleware - initialize',
  'ssecMiddleware - initialize',
  'httpAuthSchemeMiddleware - serialize',
  'regionRedirectEndpointMiddleware - before endpointV2Middleware',
  'endpointV2Middleware - serialize',
  'bucketEndpointMiddleware - after endpointV2Middleware',
  'flexibleChecksumsInputMiddleware - before serializerMiddleware',
  'serializerMiddleware - serialize',
  'contentLengthMiddleware - build',
  'addExpectContinueMiddleware - build',
  's3ExpressMiddleware - build',
  'flexibleChecksumsMiddleware - build',
  'anonymous - after flexibleChecksumsMiddleware',
  'getUserAgentMiddleware - build',
  'hostHeaderMiddleware - build',
  'recursionDetectionMiddleware - build',
  'retryMiddleware - finalizeRequest',
  'anonymous - after retryMiddleware',
  'httpSigningMiddleware (a.k.a. apiKeyMiddleware,tokenMiddleware,awsAuthMiddleware) - finalizeRequest',
  'getCheckContentLengthHeaderPlugin - finalizeRequest',
  'deserializerMiddleware - deserialize',
  'throw200ExceptionsMiddleware - after deserializerMiddleware',
  'flexibleChecksumsResponseMiddleware - after deserializerMiddleware'
]

And the log shows that error is thrown after three attempts

{
  err: 500: UnknownError
      at throwDefaultError (/codebuild/output/src1124572601/src/aws-sdk-js-v3/node_modules/@smithy/smithy-client/dist-cjs/index.js:388:20)
      at /codebuild/output/src1124572601/src/aws-sdk-js-v3/node_modules/@smithy/smithy-client/dist-cjs/index.js:397:5
      at de_CommandError (/codebuild/output/src1124572601/src/aws-sdk-js-v3/packages/nested-clients/dist-cjs/submodules/sts/index.js:299:14)
      at /codebuild/output/src1124572601/src/aws-sdk-js-v3/node_modules/@smithy/middleware-serde/dist-cjs/index.js:36:20
      at /codebuild/output/src1124572601/src/aws-sdk-js-v3/node_modules/@smithy/core/dist-cjs/index.js:193:18
      at /codebuild/output/src1124572601/src/aws-sdk-js-v3/node_modules/@smithy/middleware-retry/dist-cjs/index.js:320:38
      at /codebuild/output/src1124572601/src/aws-sdk-js-v3/packages/middleware-logger/dist-cjs/index.js:33:22
      at Object.roleAssumer (/codebuild/output/src1124572601/src/aws-sdk-js-v3/packages/nested-clients/dist-cjs/submodules/sts/index.js:839:78)
      at /codebuild/output/src1124572601/src/aws-sdk-js-v3/node_modules/@smithy/property-provider/dist-cjs/index.js:99:27
      at coalesceProvider (/codebuild/output/src1124572601/src/aws-sdk-js-v3/node_modules/@smithy/property-provider/dist-cjs/index.js:126:18) {
    '$fault': 'client',
    '$metadata': {
      httpStatusCode: 500,
      requestId: undefined,
      extendedRequestId: undefined,
      cfId: undefined,
      attempts: 3,
      totalRetryDelay: 124
    }
  }
}

But it doesn't print the logging statements:

  • after flexChecks
  • after retryMiddleware

@trivikr trivikr closed this Aug 22, 2025
@trivikr trivikr deleted the test-middleware-flexible-checksums-retry branch August 26, 2025 22:07
Copy link

This thread has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs and link to relevant comments in this thread.

@github-actions github-actions bot locked as resolved and limited conversation to collaborators Sep 10, 2025
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant