From f4076559fcd20c533381fffbad338f8fcd77a7ba Mon Sep 17 00:00:00 2001 From: Martin Taillefer Date: Tue, 30 May 2023 11:43:08 -0700 Subject: [PATCH] Update to latest --- ...ingHttpClientBuilderExtensions.Standard.cs | 48 ++++++++----------- 1 file changed, 19 insertions(+), 29 deletions(-) diff --git a/src/Libraries/Microsoft.Extensions.Http.Resilience/Hedging/HedgingHttpClientBuilderExtensions.Standard.cs b/src/Libraries/Microsoft.Extensions.Http.Resilience/Hedging/HedgingHttpClientBuilderExtensions.Standard.cs index 0ed2018440a..98f170cbe6e 100644 --- a/src/Libraries/Microsoft.Extensions.Http.Resilience/Hedging/HedgingHttpClientBuilderExtensions.Standard.cs +++ b/src/Libraries/Microsoft.Extensions.Http.Resilience/Hedging/HedgingHttpClientBuilderExtensions.Standard.cs @@ -2,13 +2,12 @@ // The .NET Foundation licenses this file to you under the MIT license. using System; +using System.Net.Http; using Microsoft.Extensions.Compliance.Classification; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Http.Resilience.Internal; using Microsoft.Extensions.Http.Resilience.Internal.Routing; using Microsoft.Extensions.Http.Resilience.Internal.Validators; -using Microsoft.Extensions.Options; -using Microsoft.Extensions.Options.Validation; using Microsoft.Extensions.Resilience.Internal; using Microsoft.Shared.Diagnostics; @@ -68,41 +67,32 @@ public static IStandardHedgingHandlerBuilder AddStandardHedgingHandler(this IHtt var optionsName = builder.Name; var routingBuilder = new RoutingStrategyBuilder(builder.Name, builder.Services); - - _ = builder.Services.AddValidatedOptions(optionsName); - _ = builder.Services.AddValidatedOptions(optionsName); _ = builder.Services.AddRequestCloner(); // configure outer handler var outerHandler = builder.AddResilienceHandler(StandardHandlerPostfix); - _ = outerHandler.AddRoutingPolicy(serviceProvider => serviceProvider.GetRoutingFactory(routingBuilder.Name)); - _ = outerHandler.AddRequestMessageSnapshotPolicy(); - _ = outerHandler.AddPolicy((builder, serviceProvider) => - { - var options = GetOptions(serviceProvider); - var hedgedTaskProvider = CreateHedgedTaskProvider(outerHandler.PipelineName); - - _ = builder - .AddTimeoutPolicy(StandardHedgingPolicyNames.TotalRequestTimeout, options.TotalRequestTimeoutOptions) - .AddHedgingPolicy(StandardHedgingPolicyNames.Hedging, hedgedTaskProvider, options.HedgingOptions); - }); + _ = outerHandler + .AddRoutingPolicy(serviceProvider => serviceProvider.GetRoutingFactory(routingBuilder.Name)) + .AddRequestMessageSnapshotPolicy() + .AddPolicy( + optionsName, + options => { }, + (builder, options, _) => builder + .AddTimeoutPolicy(StandardHedgingPolicyNames.TotalRequestTimeout, options.TotalRequestTimeoutOptions) + .AddHedgingPolicy(StandardHedgingPolicyNames.Hedging, CreateHedgedTaskProvider(outerHandler.PipelineName), options.HedgingOptions)); // configure inner handler var innerBuilder = builder.AddResilienceHandler(StandardInnerHandlerPostfix); - _ = innerBuilder.SelectPipelineByAuthority(new DataClassification("FIXME", 1)); - _ = innerBuilder.AddPolicy((builder, serviceProvider) => - { - var options = GetOptions(serviceProvider).EndpointOptions; - - _ = builder - .AddBulkheadPolicy(StandardHedgingPolicyNames.Bulkhead, options.BulkheadOptions) - .AddCircuitBreakerPolicy(StandardHedgingPolicyNames.CircuitBreaker, options.CircuitBreakerOptions) - .AddTimeoutPolicy(StandardHedgingPolicyNames.AttemptTimeout, options.TimeoutOptions); - }); + _ = innerBuilder + .SelectPipelineByAuthority(new DataClassification("FIXME", 1)) + .AddPolicy( + optionsName, + options => { }, + (builder, options, _) => builder + .AddBulkheadPolicy(StandardHedgingPolicyNames.Bulkhead, options.EndpointOptions.BulkheadOptions) + .AddCircuitBreakerPolicy(StandardHedgingPolicyNames.CircuitBreaker, options.EndpointOptions.CircuitBreakerOptions) + .AddTimeoutPolicy(StandardHedgingPolicyNames.AttemptTimeout, options.EndpointOptions.TimeoutOptions)); return new StandardHedgingHandlerBuilder(builder.Name, builder.Services, routingBuilder, innerBuilder); - - HttpStandardHedgingResilienceOptions GetOptions(IServiceProvider serviceProvider) - => serviceProvider.GetRequiredService>().Get(optionsName); } }