feat: improve retry backoff jitter #428
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
I noticed that the current backoff uses an uniformily distributed jitter. However, if the random distribution is trully uniform, this means that half of the time the backoff finishes at half the delay it would be expected to finish (e.g. at an attempt with delay 5000ms, it has 50% probability to retry after 2500ms or less). This also introduces the problem that in some other percentage of the time the backoff is actually of linear or constant delay.
This PR refactors the function so the jitter is an additive noise proportional to the current delay, which should keep the backoff at the expected order of magnitude while adding the desired randomness.
A module option is provided to control said random noise level