Quantcast
Channel: Active questions tagged retry-logic - Stack Overflow
Viewing all articles
Browse latest Browse all 950

Polly v8 - Retrying specific status codes using the PredicateBuilder

$
0
0

I am using Polly v8 and .NET framework 4.7.2 to retry on specific status responses only. However, when trying to restrict the retry to only these statuses the code will no longer invoke the retry behaviors.

It's worth noting that adding a Handle on HttpRequestException would work but begins to retry on additional status codes where the preference is just to fail fast and log

Please see the below example:

public ResiliencePipilineBuilder<HttpResponseMessage> BuildStrategy(){    var statusCodes = new List<HttpStatusCode>    {        HttpStatusCode.InternalServerError    };    PredicateBuilder<HttpResponseMessage> predicateBuilder = new PredicateBuilder<HttpResponseMessage>()        // .Handle<HttpRequestException>()  NOTE: this would work see explanation        .HandleResult(response => statusCodes.Contains(response.StatusCode));    ...    return new ResiliencePipilineBuilder<HttpResponseMessage>()        .AddRetry(new RetryStrategyOptions<HttpResponseMessage>()        {            ShouldHandle = predicateBuilder,            ...        });}public async Task<Data> SendIt(){    var strategy = BuildStrategy();    var result = strategy.ExecuteAsync(async token =>     {        var response = await client.SendAsync()        response.EnsureSuccessStatusCode();        ...    })}

Can HandleResult be used by itself to only catch the requests I want in the new v8 style?Would I have to revert to the v7 approach instead?

The Polly docs do show both approaches (Handle and HandleResult) but as a pair rather than individually


Viewing all articles
Browse latest Browse all 950

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>