From 97edc0b22dcab07499e267fbb6464506fbb0488d Mon Sep 17 00:00:00 2001 From: Penn Mackintosh Date: Tue, 24 Jun 2025 12:43:06 +0000 Subject: [PATCH] Join errors when retry token is unavailable If we fail to acquire a retry token, we are currently discarding the original error. According to the Retry Behaviour reference guide, we are expected to return the actual response (error) in this situation. With these changes, we now return the joined error, which allows callers to inspect and match on the error that caused the request to fail. --- .changelog/3723ba75-d027-4e70-93f3-6202b10d6edd.json | 9 +++++++++ aws/retry/middleware.go | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 .changelog/3723ba75-d027-4e70-93f3-6202b10d6edd.json diff --git a/.changelog/3723ba75-d027-4e70-93f3-6202b10d6edd.json b/.changelog/3723ba75-d027-4e70-93f3-6202b10d6edd.json new file mode 100644 index 00000000000..ae12e4d775e --- /dev/null +++ b/.changelog/3723ba75-d027-4e70-93f3-6202b10d6edd.json @@ -0,0 +1,9 @@ +{ + "id": "3723ba75-d027-4e70-93f3-6202b10d6edd", + "type": "bugfix", + "description": "Include original error when retry token unavailable", + "collapse": false, + "modules": [ + "aws" + ] +} diff --git a/aws/retry/middleware.go b/aws/retry/middleware.go index 52d59b04bf6..5549922ab81 100644 --- a/aws/retry/middleware.go +++ b/aws/retry/middleware.go @@ -260,7 +260,7 @@ func (r *Attempt) handleAttempt( // Get a retry token that will be released after the releaseRetryToken, retryTokenErr := r.retryer.GetRetryToken(ctx, err) if retryTokenErr != nil { - return out, attemptResult, nopRelease, retryTokenErr + return out, attemptResult, nopRelease, errors.Join(err, retryTokenErr) } //------------------------------