Specify default action generator for hedging #1263
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.
Details on the issue fix or feature implementation
I was investigating the original hedging engine and standard hedging pipeline to find a ways to simplify the hedging configuration. A lot of boilerplate in hedging is around specifying the hedging action generator.
However, we can actually allow the default for this generator. In this case the hedging just executes the original callback again ( similar to retries). This can be done by providing the original callback to the generator arguments.
Standard hedging handler can seamlessly integrate into this enhancement by:
HedgingActionGeneratorArguments
The simple API addition above will greatly simplify the code in
Microsft.Extensions.Http.Resilience
library.On top of that I have also changed the signature of the generator action from
Task<TResult>
toTask<Outcome<TResult>>
. This plays nicely with the overal infrastructure we have. Hedged actions can be optimized to not throw exceptions.Confirm the following