Skip to content

Commit 4a8c59a

Browse files
authored
API Review Feedback (2) (#1485)
1 parent 76f181f commit 4a8c59a

27 files changed

+49
-151
lines changed

src/Polly.Core/PublicAPI.Unshipped.txt

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
abstract Polly.Registry.ResiliencePipelineProvider<TKey>.TryGetPipeline(TKey key, out Polly.ResiliencePipeline? pipeline) -> bool
1+
#nullable enable
2+
abstract Polly.Registry.ResiliencePipelineProvider<TKey>.TryGetPipeline(TKey key, out Polly.ResiliencePipeline? pipeline) -> bool
23
abstract Polly.Registry.ResiliencePipelineProvider<TKey>.TryGetPipeline<TResult>(TKey key, out Polly.ResiliencePipeline<TResult>? pipeline) -> bool
34
abstract Polly.ResilienceContextPool.Get(string? operationKey, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> Polly.ResilienceContext!
45
abstract Polly.ResilienceContextPool.Return(Polly.ResilienceContext! context) -> void
@@ -255,9 +256,6 @@ Polly.ResiliencePipelineBuilderBase.InstanceName.get -> string?
255256
Polly.ResiliencePipelineBuilderBase.InstanceName.set -> void
256257
Polly.ResiliencePipelineBuilderBase.Name.get -> string?
257258
Polly.ResiliencePipelineBuilderBase.Name.set -> void
258-
Polly.ResiliencePipelineBuilderBase.Properties.get -> Polly.ResilienceProperties!
259-
Polly.ResiliencePipelineBuilderBase.Randomizer.get -> System.Func<double>!
260-
Polly.ResiliencePipelineBuilderBase.Randomizer.set -> void
261259
Polly.ResiliencePipelineBuilderBase.Validator.get -> System.Action<Polly.ResilienceValidationContext!>!
262260
Polly.ResiliencePipelineBuilderExtensions
263261
Polly.ResilienceProperties
@@ -309,6 +307,8 @@ Polly.Retry.RetryStrategyOptions<TResult>.BaseDelay.get -> System.TimeSpan
309307
Polly.Retry.RetryStrategyOptions<TResult>.BaseDelay.set -> void
310308
Polly.Retry.RetryStrategyOptions<TResult>.OnRetry.get -> System.Func<Polly.OutcomeArguments<TResult, Polly.Retry.OnRetryArguments!>, System.Threading.Tasks.ValueTask>?
311309
Polly.Retry.RetryStrategyOptions<TResult>.OnRetry.set -> void
310+
Polly.Retry.RetryStrategyOptions<TResult>.Randomizer.get -> System.Func<double>!
311+
Polly.Retry.RetryStrategyOptions<TResult>.Randomizer.set -> void
312312
Polly.Retry.RetryStrategyOptions<TResult>.RetryCount.get -> int
313313
Polly.Retry.RetryStrategyOptions<TResult>.RetryCount.set -> void
314314
Polly.Retry.RetryStrategyOptions<TResult>.RetryDelayGenerator.get -> System.Func<Polly.OutcomeArguments<TResult, Polly.Retry.RetryDelayArguments>, System.Threading.Tasks.ValueTask<System.TimeSpan>>?
@@ -322,7 +322,6 @@ Polly.RetryResiliencePipelineBuilderExtensions
322322
Polly.StrategyBuilderContext
323323
Polly.StrategyBuilderContext.BuilderInstanceName.get -> string?
324324
Polly.StrategyBuilderContext.BuilderName.get -> string?
325-
Polly.StrategyBuilderContext.BuilderProperties.get -> Polly.ResilienceProperties!
326325
Polly.StrategyBuilderContext.StrategyName.get -> string?
327326
Polly.StrategyBuilderContext.Telemetry.get -> Polly.Telemetry.ResilienceStrategyTelemetry!
328327
Polly.Telemetry.ExecutionAttemptArguments
@@ -352,10 +351,9 @@ Polly.Telemetry.ResilienceStrategyTelemetry.IsEnabled.get -> bool
352351
Polly.Telemetry.ResilienceStrategyTelemetry.Report<TArgs, TResult>(Polly.Telemetry.ResilienceEvent resilienceEvent, Polly.OutcomeArguments<TResult, TArgs> args) -> void
353352
Polly.Telemetry.ResilienceStrategyTelemetry.Report<TArgs>(Polly.Telemetry.ResilienceEvent resilienceEvent, Polly.ResilienceContext! context, TArgs args) -> void
354353
Polly.Telemetry.ResilienceTelemetrySource
355-
Polly.Telemetry.ResilienceTelemetrySource.BuilderProperties.get -> Polly.ResilienceProperties!
356354
Polly.Telemetry.ResilienceTelemetrySource.PipelineInstanceName.get -> string?
357355
Polly.Telemetry.ResilienceTelemetrySource.PipelineName.get -> string?
358-
Polly.Telemetry.ResilienceTelemetrySource.ResilienceTelemetrySource(string? pipelineName, string? pipelineInstanceName, Polly.ResilienceProperties! builderProperties, string? strategyName) -> void
356+
Polly.Telemetry.ResilienceTelemetrySource.ResilienceTelemetrySource(string? pipelineName, string? pipelineInstanceName, string? strategyName) -> void
359357
Polly.Telemetry.ResilienceTelemetrySource.StrategyName.get -> string?
360358
Polly.Telemetry.TelemetryEventArguments
361359
Polly.Telemetry.TelemetryEventArguments.Arguments.get -> object!

src/Polly.Core/Registry/ResiliencePipelineRegistry.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -297,7 +297,6 @@ private static ResiliencePipeline CreatePipeline<TBuilder>(
297297
diagnosticSource,
298298
context.BuilderName,
299299
context.BuilderInstanceName,
300-
builder.Properties,
301300
null));
302301
}
303302

src/Polly.Core/ResiliencePipelineBuilderBase.cs

Lines changed: 2 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,7 @@ private protected ResiliencePipelineBuilderBase()
2626
private protected ResiliencePipelineBuilderBase(ResiliencePipelineBuilderBase other)
2727
{
2828
Name = other.Name;
29-
Properties = other.Properties;
3029
TimeProvider = other.TimeProvider;
31-
Randomizer = other.Randomizer;
3230
DiagnosticSource = other.DiagnosticSource;
3331
}
3432

@@ -55,14 +53,6 @@ private protected ResiliencePipelineBuilderBase(ResiliencePipelineBuilderBase ot
5553
/// </value>
5654
public string? InstanceName { get; set; }
5755

58-
/// <summary>
59-
/// Gets the custom properties attached to builder options.
60-
/// </summary>
61-
/// <value>
62-
/// The default value is the empty instance of <see cref="ResilienceProperties"/>.
63-
/// </value>
64-
public ResilienceProperties Properties { get; } = new();
65-
6656
/// <summary>
6757
/// Gets or sets a <see cref="TimeProvider"/> that is used by strategies that work with time.
6858
/// </summary>
@@ -87,16 +77,6 @@ private protected ResiliencePipelineBuilderBase(ResiliencePipelineBuilderBase ot
8777
[EditorBrowsable(EditorBrowsableState.Never)]
8878
public DiagnosticSource? DiagnosticSource { get; set; }
8979

90-
/// <summary>
91-
/// Gets or sets the randomizer that is used by strategies that need to generate random numbers.
92-
/// </summary>
93-
/// <value>
94-
/// The default value is thread-safe randomizer that returns values between 0.0 and 1.0.
95-
/// </value>
96-
[EditorBrowsable(EditorBrowsableState.Never)]
97-
[Required]
98-
public Func<double> Randomizer { get; set; } = RandomUtil.Instance.NextDouble;
99-
10080
/// <summary>
10181
/// Gets the validator that is used for the validation.
10282
/// </summary>
@@ -139,7 +119,7 @@ internal ResiliencePipeline BuildPipeline()
139119

140120
return CompositeResiliencePipeline.Create(
141121
strategies,
142-
TelemetryUtil.CreateTelemetry(DiagnosticSource, Name, InstanceName, Properties, null),
122+
TelemetryUtil.CreateTelemetry(DiagnosticSource, Name, InstanceName, null),
143123
TimeProvider);
144124
}
145125

@@ -148,11 +128,9 @@ private ResiliencePipeline CreateResiliencePipeline(Entry entry)
148128
var context = new StrategyBuilderContext(
149129
builderName: Name,
150130
builderInstanceName: InstanceName,
151-
builderProperties: Properties,
152131
strategyName: entry.Options.Name,
153132
timeProvider: TimeProvider,
154-
diagnosticSource: DiagnosticSource,
155-
randomizer: Randomizer);
133+
diagnosticSource: DiagnosticSource);
156134

157135
var strategy = entry.Factory(context);
158136
strategy.Options = entry.Options;

src/Polly.Core/Retry/RetryResiliencePipelineBuilderExtensions.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public static ResiliencePipelineBuilder AddRetry(this ResiliencePipelineBuilder
2828
Guard.NotNull(options);
2929

3030
return builder.AddStrategy(
31-
context => new RetryResilienceStrategy<object>(options, context.TimeProvider, context.Telemetry, context.Randomizer),
31+
context => new RetryResilienceStrategy<object>(options, context.TimeProvider, context.Telemetry),
3232
options);
3333
}
3434

@@ -53,7 +53,7 @@ public static ResiliencePipelineBuilder AddRetry(this ResiliencePipelineBuilder
5353
Guard.NotNull(options);
5454

5555
return builder.AddStrategy(
56-
context => new RetryResilienceStrategy<TResult>(options, context.TimeProvider, context.Telemetry, context.Randomizer),
56+
context => new RetryResilienceStrategy<TResult>(options, context.TimeProvider, context.Telemetry),
5757
options);
5858
}
5959
}

src/Polly.Core/Retry/RetryResilienceStrategy.cs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,7 @@ internal sealed class RetryResilienceStrategy<T> : ResilienceStrategy<T>
1111
public RetryResilienceStrategy(
1212
RetryStrategyOptions<T> options,
1313
TimeProvider timeProvider,
14-
ResilienceStrategyTelemetry telemetry,
15-
Func<double> randomizer)
14+
ResilienceStrategyTelemetry telemetry)
1615
{
1716
ShouldHandle = options.ShouldHandle;
1817
BaseDelay = options.BaseDelay;
@@ -24,7 +23,7 @@ public RetryResilienceStrategy(
2423

2524
_timeProvider = timeProvider;
2625
_telemetry = telemetry;
27-
_randomizer = randomizer;
26+
_randomizer = options.Randomizer;
2827
}
2928

3029
public TimeSpan BaseDelay { get; }

src/Polly.Core/Retry/RetryStrategyOptions.TResult.cs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
using System.ComponentModel;
12
using System.ComponentModel.DataAnnotations;
23

34
namespace Polly.Retry;
@@ -103,4 +104,14 @@ public class RetryStrategyOptions<TResult> : ResilienceStrategyOptions
103104
/// The default value is <see langword="null"/>.
104105
/// </value>
105106
public Func<OutcomeArguments<TResult, OnRetryArguments>, ValueTask>? OnRetry { get; set; }
107+
108+
/// <summary>
109+
/// Gets or sets the randomizer that is used by the retry strategy to generate random numbers.
110+
/// </summary>
111+
/// <value>
112+
/// The default value is thread-safe randomizer that returns values between 0.0 and 1.0.
113+
/// </value>
114+
[EditorBrowsable(EditorBrowsableState.Never)]
115+
[Required]
116+
public Func<double> Randomizer { get; set; } = RandomUtil.Instance.NextDouble;
106117
}

src/Polly.Core/StrategyBuilderContext.cs

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -10,19 +10,15 @@ public sealed class StrategyBuilderContext
1010
internal StrategyBuilderContext(
1111
string? builderName,
1212
string? builderInstanceName,
13-
ResilienceProperties builderProperties,
1413
string? strategyName,
1514
TimeProvider timeProvider,
16-
DiagnosticSource? diagnosticSource,
17-
Func<double> randomizer)
15+
DiagnosticSource? diagnosticSource)
1816
{
1917
BuilderName = builderName;
2018
BuilderInstanceName = builderInstanceName;
21-
BuilderProperties = builderProperties;
2219
StrategyName = strategyName;
2320
TimeProvider = timeProvider;
24-
Telemetry = TelemetryUtil.CreateTelemetry(diagnosticSource, builderName, builderInstanceName, builderProperties, strategyName);
25-
Randomizer = randomizer;
21+
Telemetry = TelemetryUtil.CreateTelemetry(diagnosticSource, builderName, builderInstanceName, strategyName);
2622
}
2723

2824
/// <summary>
@@ -35,11 +31,6 @@ internal StrategyBuilderContext(
3531
/// </summary>
3632
public string? BuilderInstanceName { get; }
3733

38-
/// <summary>
39-
/// Gets the custom properties attached to the builder.
40-
/// </summary>
41-
public ResilienceProperties BuilderProperties { get; }
42-
4334
/// <summary>
4435
/// Gets the name of the strategy.
4536
/// </summary>
@@ -54,6 +45,4 @@ internal StrategyBuilderContext(
5445
/// Gets the <see cref="TimeProvider"/> used by this strategy.
5546
/// </summary>
5647
internal TimeProvider TimeProvider { get; }
57-
58-
internal Func<double> Randomizer { get; }
5948
}

src/Polly.Core/Telemetry/ResilienceTelemetrySource.cs

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,17 +13,14 @@ public sealed class ResilienceTelemetrySource
1313
/// </summary>
1414
/// <param name="pipelineName">The pipeline name.</param>
1515
/// <param name="pipelineInstanceName">The pipeline instance name.</param>
16-
/// <param name="builderProperties">The builder properties.</param>
1716
/// <param name="strategyName">The strategy name.</param>
1817
public ResilienceTelemetrySource(
1918
string? pipelineName,
2019
string? pipelineInstanceName,
21-
ResilienceProperties builderProperties,
2220
string? strategyName)
2321
{
2422
PipelineName = pipelineName;
2523
PipelineInstanceName = pipelineInstanceName;
26-
BuilderProperties = builderProperties;
2724
StrategyName = strategyName;
2825
}
2926

@@ -37,11 +34,6 @@ public ResilienceTelemetrySource(
3734
/// </summary>
3835
public string? PipelineInstanceName { get; }
3936

40-
/// <summary>
41-
/// Gets the builder properties.
42-
/// </summary>
43-
public ResilienceProperties BuilderProperties { get; }
44-
4537
/// <summary>
4638
/// Gets the strategy name.
4739
/// </summary>

src/Polly.Core/Telemetry/TelemetryUtil.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,9 @@ public static ResilienceStrategyTelemetry CreateTelemetry(
1414
DiagnosticSource? diagnosticSource,
1515
string? builderName,
1616
string? builderInstanceName,
17-
ResilienceProperties builderProperties,
1817
string? strategyName)
1918
{
20-
var telemetrySource = new ResilienceTelemetrySource(builderName, builderInstanceName, builderProperties, strategyName);
19+
var telemetrySource = new ResilienceTelemetrySource(builderName, builderInstanceName, strategyName);
2120

2221
return new ResilienceStrategyTelemetry(telemetrySource, diagnosticSource);
2322
}

src/Polly.Extensions/DependencyInjection/PollyDependencyInjectionKeys.cs

Lines changed: 0 additions & 12 deletions
This file was deleted.

0 commit comments

Comments
 (0)