Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: add log for failed refresh of retry token #727

Merged
merged 8 commits into from
May 17, 2024
Merged
Changes from 4 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
6 changes: 3 additions & 3 deletions Sources/ClientRuntime/Middleware/RetryMiddleware.swift
Original file line number Diff line number Diff line change
Expand Up @@ -61,18 +61,18 @@ public struct RetryMiddleware<Strategy: RetryStrategy,
do {
try await strategy.refreshRetryTokenForRetry(tokenToRenew: token, errorInfo: errorInfo)
} catch {
// TODO: log token error here
context.getLogger()?.error("Failed to refresh retry token: \(errorInfo)")
Copy link
Contributor

Choose a reason for hiding this comment

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

What does printing errorInfo actually log?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I changed this to errorInfo.errorType which will print out the type of error based on RetryErrorType enum:

/// This is a connection level error such as a socket timeout, socket connect error, tls negotiation timeout etc...
/// Typically these should never be applied for non-idempotent, request types since in this scenario, it’s impossible
/// to know whether the operation had a side effect on the server.
case transient

/// This is an error where the server explicitly told the client to back off, such as a 429 or 503 HTTP error.
case throttling

/// This is a server error that isn’t explicitly throttling but is considered by the client to be something that should be retried.
case serverError

/// Doesn’t count against any budgets.  This could be something like a 401 challenge in HTTP.
case clientError

throw operationError
}
var estimatedSkew = context.attributes.get(key: AttributeKeys.estimatedSkew)
if estimatedSkew == nil {
estimatedSkew = 0
context.getLogger()!.info("Estimated skew not found; defaulting to zero.")
context.getLogger()?.info("Estimated skew not found; defaulting to zero.")
}
var socketTimeout = context.attributes.get(key: AttributeKeys.socketTimeout)
if socketTimeout == nil {
socketTimeout = 60.0
context.getLogger()!.info("Socket timeout value not found; defaulting to 60 seconds.")
context.getLogger()?.info("Socket timeout value not found; defaulting to 60 seconds.")
}
let ttlDateUTCString = getTTL(now: Date(), estimatedSkew: estimatedSkew!, socketTimeout: socketTimeout!)
input.headers.update(
Expand Down
Loading