concurrent-api: fix IllegalArgumentExcetion for zero jitter in RetryStrategies #2777
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.
Motivation:
If you pass in a jitter of 0 for the retry strategies with delta delay you'll get an
IllegalArgumentException
thrown by theRandom.nextLong(lower, upper)
method because the lower and upper are the same value. This is because the upper bound argument is non-inclusive.Modifications:
Add 1 to each call to extend the range by 1 nanosecond and make the full delay range selectable. We also do this in the case of the
*FullJitter
methods to make the full delay an option instead of being limited todelay - 1ns
.Result:
Less illegal argument exceptions and (technically, although admittedly not practically important) correct delay ranges.