sprints and audit work
This commit is contained in:
@@ -22,6 +22,7 @@ internal sealed class AdvisoryTaskWorker : BackgroundService
|
||||
private readonly AdvisoryPipelineMetrics _metrics;
|
||||
private readonly IAdvisoryPipelineExecutor _executor;
|
||||
private readonly TimeProvider _timeProvider;
|
||||
private readonly Func<double> _jitterSource;
|
||||
private readonly ILogger<AdvisoryTaskWorker> _logger;
|
||||
private int _consecutiveErrors;
|
||||
|
||||
@@ -32,7 +33,8 @@ internal sealed class AdvisoryTaskWorker : BackgroundService
|
||||
AdvisoryPipelineMetrics metrics,
|
||||
IAdvisoryPipelineExecutor executor,
|
||||
TimeProvider timeProvider,
|
||||
ILogger<AdvisoryTaskWorker> logger)
|
||||
ILogger<AdvisoryTaskWorker> logger,
|
||||
Func<double>? jitterSource = null)
|
||||
{
|
||||
_queue = queue ?? throw new ArgumentNullException(nameof(queue));
|
||||
_cache = cache ?? throw new ArgumentNullException(nameof(cache));
|
||||
@@ -40,6 +42,7 @@ internal sealed class AdvisoryTaskWorker : BackgroundService
|
||||
_metrics = metrics ?? throw new ArgumentNullException(nameof(metrics));
|
||||
_executor = executor ?? throw new ArgumentNullException(nameof(executor));
|
||||
_timeProvider = timeProvider ?? throw new ArgumentNullException(nameof(timeProvider));
|
||||
_jitterSource = jitterSource ?? Random.Shared.NextDouble;
|
||||
_logger = logger ?? throw new ArgumentNullException(nameof(logger));
|
||||
}
|
||||
|
||||
@@ -146,8 +149,8 @@ internal sealed class AdvisoryTaskWorker : BackgroundService
|
||||
// Exponential backoff: base * 2^(errorCount-1), capped at max
|
||||
var backoff = Math.Min(BaseRetryDelaySeconds * Math.Pow(2, errorCount - 1), MaxRetryDelaySeconds);
|
||||
|
||||
// Add jitter (+/- JitterFactor percent)
|
||||
var jitter = backoff * JitterFactor * (2 * Random.Shared.NextDouble() - 1);
|
||||
// Add jitter (+/- JitterFactor percent) using injectable source for testability
|
||||
var jitter = backoff * JitterFactor * (2 * _jitterSource() - 1);
|
||||
|
||||
return Math.Max(BaseRetryDelaySeconds, backoff + jitter);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user