You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Retry-After is a standard header used by APIs to indicate when the SDK can retry.
The SDKs should:
Honor this header on 429s
Expose this header value in the error when received
Fallback to exponential retry when this header is not available (e.g. not sent by the server on 429s or on e.g. 500s)
Drop support for retrying based on X-Rate-Limit-Reset (currently only .NET SDK supports that), though still expose it in the logs
Current State
SDK
Retries on
Default Num Retries
Max Num Retries
State
JS
429s, 500s
3
15
Does not consider headers. Implements exponential backoff, with the following algorithm
2^loopCount * 100ms and 2^(loopCount + 1) * 100ms
Describe the ideal solution
Retry On
Retry on 429s, falling back to exponential backoff
Retry on 5xxs (except 501 not implemented), falling back to exponential backoff
Retry on network errors, falling back to exponential backoff
Max Allowable Retries
15
Default Number of Retries
SDKs: 3
Retry Parameters
If Retry-After header is found, use it
if it is an integer, treat it as the number of seconds from now to retry, if it is <1 from now or >1800 from now (aka >30 min) - assume it is invalid and continue
if it is a date, parse it but if it is <1 from now or >1800 from now (aka >30 min) - assume it is invalid and continue
If neither header is found, use exponential backoff but we'll add some jitter, so the retry is a random number between
2^loopCount * 500ms and 2^(loopCount + 1) * 500ms
if the result of (a) is > 120s, cap it at 120s which should happen between the 8th and 9th retry
That means:
if retry-after header was returned and is valid, we’ll use it - so if it says in 4 min all good
if retry-after header was not returned, we will retry at:
100ms
200ms
400ms
800ms
1.6s
3.2s
6.4s
12.8s
25.6s
51.2s
102.4s
120s ← at this point is is >4min since initial call
120s
120s
120s
Alternatives and current workarounds
No response
References
No response
Additional context
No response
The text was updated successfully, but these errors were encountered:
Checklist
Describe the problem you'd like to have solved
Retry-After is a standard header used by APIs to indicate when the SDK can retry.
The SDKs should:
X-Rate-Limit-Reset
(currently only .NET SDK supports that), though still expose it in the logsCurrent State
2^loopCount * 100ms and 2^(loopCount + 1) * 100ms
Describe the ideal solution
Retry On
Max Allowable Retries
15
Default Number of Retries
SDKs: 3
Retry Parameters
If
Retry-After
header is found, use itIf neither header is found, use exponential backoff but we'll add some jitter, so the retry is a random number between
2^loopCount * 500ms and 2^(loopCount + 1) * 500ms
That means:
Alternatives and current workarounds
No response
References
No response
Additional context
No response
The text was updated successfully, but these errors were encountered: