From b35d0838721ac29c0d3f91610b08a2f09f5261a7 Mon Sep 17 00:00:00 2001 From: Harshavardhana Date: Wed, 26 Jun 2024 01:32:06 -0700 Subject: [PATCH] fix; change retry-after 60sec for 503s and 10s for 429s (#19996) --- cmd/api-response.go | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/cmd/api-response.go b/cmd/api-response.go index 6f065feb4..e9d68aba5 100644 --- a/cmd/api-response.go +++ b/cmd/api-response.go @@ -946,10 +946,20 @@ func writeSuccessResponseHeadersOnly(w http.ResponseWriter) { // writeErrorResponse writes error headers func writeErrorResponse(ctx context.Context, w http.ResponseWriter, err APIError, reqURL *url.URL) { - if err.HTTPStatusCode == http.StatusServiceUnavailable { - // Set retry-after header to indicate user-agents to retry request after 120secs. + switch err.HTTPStatusCode { + case http.StatusServiceUnavailable: + // Set retry-after header to indicate user-agents to retry request after 60 seconds. // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Retry-After - w.Header().Set(xhttp.RetryAfter, "120") + w.Header().Set(xhttp.RetryAfter, "60") + case http.StatusTooManyRequests: + _, deadline := globalAPIConfig.getRequestsPool() + if deadline <= 0 { + // Set retry-after header to indicate user-agents to retry request after 10 seconds. + // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Retry-After + w.Header().Set(xhttp.RetryAfter, "10") + } else { + w.Header().Set(xhttp.RetryAfter, strconv.Itoa(int(deadline.Seconds()))) + } } switch err.Code {