fix: Long retry-after would generate timeout instead of RateLimitException
Needed to move the retry handler before the TimeOut handler, and drive the throw from the TimeOut configured by the user for the provider.
This commit is contained in:
parent
41787077db
commit
76dc3e0b98
1 changed files with 7 additions and 6 deletions
|
|
@ -92,11 +92,6 @@ public static class DiConfig
|
|||
|
||||
private static void ConfigureResiliencePipeline(ResiliencePipelineBuilder<HttpResponseMessage> builder)
|
||||
{
|
||||
builder.AddTimeout(new TimeoutStrategyOptions
|
||||
{
|
||||
TimeoutGenerator = _ => new(TimeSpan.FromSeconds(Settings.Get.Provider.Timeout))
|
||||
});
|
||||
|
||||
builder.AddRateLimitHeaders(options =>
|
||||
{
|
||||
options.EnableProactiveThrottling = true;
|
||||
|
|
@ -120,8 +115,9 @@ public static class DiConfig
|
|||
if (args.Outcome.Result is { StatusCode: HttpStatusCode.TooManyRequests } response)
|
||||
{
|
||||
var delay = RateLimitHandler.GetRetryAfterDelay(response);
|
||||
var timeout = TimeSpan.FromSeconds(Settings.Get.Provider.Timeout);
|
||||
|
||||
if (delay >= TimeSpan.FromMinutes(10))
|
||||
if (delay >= timeout)
|
||||
{
|
||||
return new ValueTask<TimeSpan?>((TimeSpan?)null);
|
||||
}
|
||||
|
|
@ -132,5 +128,10 @@ public static class DiConfig
|
|||
return new((TimeSpan?)null);
|
||||
}
|
||||
});
|
||||
|
||||
builder.AddTimeout(new TimeoutStrategyOptions
|
||||
{
|
||||
TimeoutGenerator = _ => new(TimeSpan.FromSeconds(Settings.Get.Provider.Timeout))
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue