< Summary

Information
Class: Services.BackgroundJobsServices.TransactionJobRetryPolicy
Assembly: Services
File(s): /home/runner/work/Studio2Prod/Studio2Prod/AppRepository/BackgroundJobsServices/TransactionJobRetryPolicy.cs
Line coverage
86%
Covered lines: 13
Uncovered lines: 2
Coverable lines: 15
Total lines: 39
Line coverage: 86.6%
Branch coverage
83%
Covered branches: 10
Total branches: 12
Branch coverage: 83.3%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.cctor()100%11100%
ShouldRetry(...)90%111080%
GetDelayForAttempt(...)50%2275%

File(s)

/home/runner/work/Studio2Prod/Studio2Prod/AppRepository/BackgroundJobsServices/TransactionJobRetryPolicy.cs

#LineLine coverage
 1using OzonDomains.Models;
 2
 3namespace Services.BackgroundJobsServices;
 4
 5/// <summary>
 6/// Политика повторного запуска TransactionJobs при ошибках выполнения или заказов.
 7/// </summary>
 8public static class TransactionJobRetryPolicy
 9{
 10    /// <summary>Число отложенных повторов после первой неуспешной попытки (всего запусков = 1 + MaxRetryAttempts).</sum
 11    public const int MaxRetryAttempts = 3;
 12
 113    public static readonly TimeSpan[] RetryDelays =
 114    {
 115        TimeSpan.FromMinutes(5),
 116        TimeSpan.FromMinutes(15),
 117        TimeSpan.FromMinutes(30)
 118    };
 19
 20    public static bool ShouldRetry(BackgroundJobExecution? execution, bool hasFailedTransactionResults)
 21    {
 522        if (execution == null)
 023            return false;
 24
 525        if (hasFailedTransactionResults || execution.FailedOrders > 0)
 326            return true;
 27
 228        return execution.Status is "Failed" or "PartialSuccess";
 29    }
 30
 31    public static TimeSpan GetDelayForAttempt(int retryAttempt)
 32    {
 433        if (retryAttempt < 1)
 034            retryAttempt = 1;
 35
 436        var index = Math.Min(retryAttempt - 1, RetryDelays.Length - 1);
 437        return RetryDelays[index];
 38    }
 39}