google-cloud-java
google-cloud-java copied to clipboard
Update Jitter in Exponential Retry Strategy
Is your feature request related to a problem? Please describe. In Exponential Retry Strategy, Jitter is used to prevent from several clients retrying at the same time. However, the existing jitter value is generated per:
actualDelay = rand_between(0, min(maxRetryDelay, exponentialDelay))
The issue with the delay is with pathological case of a short delay, e.g. 1 second.
Describe the solution you'd like It would help to update jitter delay to be either one of the following:
actualDelay = exponentialDelay + rand_milliseconds()actualDelay = rand_between(exponentialDelay - E, exponentialDelay + E)where E is constant value used to create a range with respect to exponentialDelay.
Describe alternatives you've considered Turning off jitter which defeats the purpose of having jitter.
First came up in: https://github.com/googleapis/java-storage/issues/178