-
Notifications
You must be signed in to change notification settings - Fork 634
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
retry
: adds ability to return metadata for each request attempt (#1031
) * adds request attempt metadata util and workflow * add tests and fix bug * adds more test and feedback changes * renames exported types to AttemptResults, AttemptResult and ResponseMetadata * fix getter func for attempt results to return bool instead of an err * remove response metadata struct and rename attempt clock skew middleware to record response timing middleware * add middleware to store raw response on metadata and rename helper for record response timing middleware * fix lint error, add test and helpers * move rawResponseToMetadata middleware as first deser middleware. retry metric no longer returns an error if metadata is not present. * generated service changes
- Loading branch information
1 parent
e0f7284
commit b37d705
Showing
9,099 changed files
with
36,802 additions
and
9,204 deletions.
The diff you're trying to view is too large. We only load the first 3000 changed files.
There are no files selected for viewing
This file contains 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
This file contains 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
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,52 @@ | ||
package retry | ||
|
||
import ( | ||
awsmiddle "github.com/aws/aws-sdk-go-v2/aws/middleware" | ||
"github.com/aws/smithy-go/middleware" | ||
) | ||
|
||
// attemptResultsKey is a metadata accessor key to retrieve metadata | ||
// for all request attempts. | ||
type attemptResultsKey struct { | ||
} | ||
|
||
// GetAttemptResults retrieves attempts results from middleware metadata. | ||
func GetAttemptResults(metadata middleware.Metadata) (AttemptResults, bool) { | ||
m, ok := metadata.Get(attemptResultsKey{}).(AttemptResults) | ||
return m, ok | ||
} | ||
|
||
// AttemptResults represents struct containing metadata returned by all request attempts. | ||
type AttemptResults struct { | ||
|
||
// Results is a slice consisting attempt result from all request attempts. | ||
// Results are stored in order request attempt is made. | ||
Results []AttemptResult | ||
} | ||
|
||
// AttemptResult represents attempt result returned by a single request attempt. | ||
type AttemptResult struct { | ||
|
||
// Err is the error if received for the request attempt. | ||
Err error | ||
|
||
// Retryable denotes if request may be retried. This states if an | ||
// error is considered retryable. | ||
Retryable bool | ||
|
||
// Retried indicates if this request was retried. | ||
Retried bool | ||
|
||
// ResponseMetadata is any existing metadata passed via the response middlewares. | ||
ResponseMetadata middleware.Metadata | ||
} | ||
|
||
// addAttemptResults adds attempt results to middleware metadata | ||
func addAttemptResults(metadata *middleware.Metadata, v AttemptResults) { | ||
metadata.Set(attemptResultsKey{}, v) | ||
} | ||
|
||
// GetRawResponse returns raw response recorded for the attempt result | ||
func (a AttemptResult) GetRawResponse() interface{} { | ||
return awsmiddle.GetRawResponse(a.ResponseMetadata) | ||
} |
Oops, something went wrong.