diff --git a/src/internal/connector/graph/retry_middleware.go b/src/internal/connector/graph/retry_middleware.go index c836a251b..2a4ebb73e 100644 --- a/src/internal/connector/graph/retry_middleware.go +++ b/src/internal/connector/graph/retry_middleware.go @@ -35,8 +35,7 @@ func (middleware RetryHandler) retryRequest( ) (*http.Response, error) { if (respErr != nil || middleware.isRetriableErrorCode(req, resp.StatusCode)) && middleware.isRetriableRequest(req) && - executionCount < middleware.MaxRetries && - cumulativeDelay < time.Duration(absoluteMaxDelaySeconds)*time.Second { + executionCount < middleware.MaxRetries { executionCount++ delay := middleware.getRetryDelay(req, resp, exponentialBackoff) @@ -71,7 +70,7 @@ func (middleware RetryHandler) retryRequest( } func (middleware RetryHandler) isRetriableErrorCode(req *http.Request, code int) bool { - return code == http.StatusInternalServerError + return code == http.StatusInternalServerError || code == http.StatusServiceUnavailable } func (middleware RetryHandler) isRetriableRequest(req *http.Request) bool { diff --git a/src/internal/connector/graph/service.go b/src/internal/connector/graph/service.go index 69403fb19..435849c8c 100644 --- a/src/internal/connector/graph/service.go +++ b/src/internal/connector/graph/service.go @@ -27,12 +27,10 @@ import ( const ( logGraphRequestsEnvKey = "LOG_GRAPH_REQUESTS" log2xxGraphRequestsEnvKey = "LOG_2XX_GRAPH_REQUESTS" - numberOfRetries = 3 retryAttemptHeader = "Retry-Attempt" retryAfterHeader = "Retry-After" defaultMaxRetries = 3 defaultDelay = 3 * time.Second - absoluteMaxDelaySeconds = 180 rateLimitHeader = "RateLimit-Limit" rateRemainingHeader = "RateLimit-Remaining" rateResetHeader = "RateLimit-Reset" @@ -309,7 +307,7 @@ func (handler *LoggingMiddleware) Intercept( msg := fmt.Sprintf("graph api error: %s", resp.Status) // special case for supportability: log all throttling cases. - if resp.StatusCode == http.StatusTooManyRequests { + if resp.StatusCode == http.StatusTooManyRequests || resp.StatusCode == http.StatusServiceUnavailable { log.With( "limit", resp.Header.Get(rateLimitHeader), "remaining", resp.Header.Get(rateRemainingHeader),