Improve retry middleware option parsing #407
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.
When
delay
ormax_delay
are less than1
, the Retry middleware currently crashes with the following error:It happens because
:rand.uniform/1
requires a positive integer.Original idea
Make sure retry won't crash when eitherdelay
ormax_delay
are misconfigured.This change adjustsmax_delay
to1
when it isn't positive and also adjustsdelay
to make sure it falls within1..max_delay
. Ideally, I believe we should will raise anArgumentError
right away when these values are invalid, e.g. when they are not integers, but that would be a bigger, breaking change. So this is a compromise we can safely make for now, without any behavior changes.Update
This change applies strict validation to some retry middleware options. Now we explicitly fail when either one of the following misconfigurations are detected:
delay
is not a positive integer.max_delay
is not a positive integer.max_retries
is not a non-negative integer.