<PackageReference Include="Relativity.Server.Import.SDK" Version="2.9.2" />

WritersRetryPolicy

using kCura.WinEDDS; using kCura.WinEDDS.Exceptions; using Polly; using System; namespace Relativity.DataExchange.Export.VolumeManagerV2.Metadata { public class WritersRetryPolicy : IWritersRetryPolicy { private readonly int _numberOfRetries; private readonly int _waitTimeBetweenRetryAttempts; public const string CONTEXT_LAST_ARTIFACT_ID_KEY = "LastArtifactId"; public WritersRetryPolicy(IExportConfig exportConfig) { _numberOfRetries = exportConfig.ExportIOErrorNumberOfRetries; _waitTimeBetweenRetryAttempts = exportConfig.ExportIOErrorWaitTime; } public Policy CreateRetryPolicy(Action<Exception, TimeSpan, int, Context> onRetry) { return RetrySyntax.WaitAndRetry(Policy.Handle<ExportBaseException>(), _numberOfRetries, (Func<int, TimeSpan>)SleepDurationProvider, onRetry); } private TimeSpan SleepDurationProvider(int retryAttempt) { if (retryAttempt > 1) return TimeSpan.FromSeconds((double)_waitTimeBetweenRetryAttempts); return TimeSpan.Zero; } } }