Polly.Extensions.Http icon indicating copy to clipboard operation
Polly.Extensions.Http copied to clipboard

Polly doesn't seem to be retrying on timeout errors

Open TPitman-mindfiretechnology opened this issue 2 years ago • 0 comments

I am using the Microsoft.Extensions.Http.Polly in a Blazor app with Microservices all being hosted on Azure in docker.

I added a very simple use of Polly in my Program.cs like this:

static IAsyncPolicy<HttpResponseMessage> GetRetryPolicy() { return HttpPolicyExtensions .HandleTransientHttpError() .WaitAndRetryAsync(3, retryAttempt => TimeSpan.FromSeconds(Math.Pow(4, retryAttempt))); }

When I created my refit interfaces they use that policy like this:

builder.Services.AddRefitClient<IGeneralLedgerClient>() .ConfigureHttpClient(config => { config.BaseAddress = new Uri(baseUris!.AccountingApi!); config.Timeout = TimeSpan.FromSeconds(15); }) .AddPolicyHandler(GetRetryPolicy());

The containers on Azure are set to shut down after about 5 minutes. There is a Blazor website that calls the micro services. If you start the website after everything has shut down, the calls from the website to the micro services times out. If I open the Chrome or Edge dev tools and watch the network traffic I can see all the micro service calls time out after about 10 seconds.

If I simply hit refresh everything works because the micro services have all been started up from the call just a few seconds before.

This is why I added the above Polly code.

As far as I can tell Polly is not retrying.

You may notice that the retry fallback time starts at 4 so that the retries will happen at 1, 4 and 16 seconds just to give the micro services time to start up since it seems they need at least 10 seconds.

Why does this not seem to be retrying?