/// <summary> /// Create an exponential backoff retry policy given a detection strategy. /// </summary> /// <param name="strategy"></param> /// <returns></returns> private static RetryPolicy Exponential(ITransientErrorDetectionStrategy strategy, int retryCount) { if (retryCount == 0) return RetryPolicy.NoRetry; if (retryCount == 1) { var retryPolicy = new RetryPolicy(strategy, 1); retryPolicy.RetryStrategy.FastFirstRetry = true; return retryPolicy; } var minBackoff = TimeSpan.FromSeconds(1); var maxBackoff = TimeSpan.FromSeconds(10); var deltaBackoff = TimeSpan.FromSeconds(5); // if retryCount is equal to Int16.MaxValue (32767) // then increase the backoff intervals. if (retryCount == Int16.MaxValue) { minBackoff = TimeSpan.FromSeconds(1); maxBackoff = TimeSpan.FromSeconds(300); deltaBackoff = TimeSpan.FromSeconds(10); } // 30 60 120 240 var exponentialBackoff = new ExponentialBackoff(retryCount, minBackoff, maxBackoff, deltaBackoff); return new RetryPolicy(strategy, exponentialBackoff); }
public UpdateSessionManagerRetryDecorator(IUpdateSessionManager updateSessionManager, RetryStrategy retryStrategy, ITransientErrorDetectionStrategy errorDetectionStrategy) { _updateSessionManager = updateSessionManager; _retryPolicy = new RetryPolicy(errorDetectionStrategy, retryStrategy); }
private static RetryPolicy Exponential(ITransientErrorDetectionStrategy strategy) { var retryCount = 3; var minBackoff = TimeSpan.FromSeconds(1); var maxBackoff = TimeSpan.FromSeconds(10); var deltaBackoff = TimeSpan.FromSeconds(5); var exponentialBackoff = new ExponentialBackoff(retryCount, minBackoff, maxBackoff, deltaBackoff); return new RetryPolicy(strategy, exponentialBackoff); }
private static RetryPolicy Exponential(ITransientErrorDetectionStrategy strategy, int retryCount, double maxBackoffDelayInSeconds, double delta) { var maxBackoff = TimeSpan.FromSeconds(maxBackoffDelayInSeconds); var deltaBackoff = TimeSpan.FromSeconds(delta); var minBackoff = TimeSpan.FromSeconds(0); var exponentialBackoff = new ExponentialBackoff(retryCount, minBackoff, maxBackoff, deltaBackoff); return new RetryPolicy(strategy, exponentialBackoff); }
/// <summary> /// Initializes a new instance of the <see cref="T:GlebTeterin.ReliableSql.ReliableSqlConnection"/> class with the specified number of retry attempts and backoff parameters for calculating the exponential delay between retries. /// </summary> public ReliableSqlConnection(string connectionString, ITransientErrorDetectionStrategy errorDetectionStrategy, int retryCount, TimeSpan minBackoff, TimeSpan maxBackoff, TimeSpan deltaBackoff) : this(connectionString, new SmartRetryPolicy(errorDetectionStrategy, retryCount, minBackoff, maxBackoff, deltaBackoff)) { }
/// <summary> /// Initializes a new instance of the <see cref="T:GlebTeterin.ReliableSql.ReliableSqlConnection"/> class with the specified number of retry attempts and default fixed time interval between retries. /// </summary> public ReliableSqlConnection(string connectionString, ITransientErrorDetectionStrategy errorDetectionStrategy, int retryCount) : this(connectionString, new SmartRetryPolicy(errorDetectionStrategy, retryCount)) { }
private static RetryPolicy Exponential(ITransientErrorDetectionStrategy strategy, int count) { return Exponential(strategy, count, 1024d, 2d); }
public static RetryPolicy GetPolicy(ITransientErrorDetectionStrategy strategy, int retryCount) { RetryPolicy policy = new RetryPolicy(strategy, retryCount, TimeSpan.FromMilliseconds(50), TimeSpan.FromMilliseconds(50)); return policy; }
/// <summary> /// Initializes a new instance of the <see cref="T:Microsoft.Azure.WebJobs.Extensions.EdgeHub.RetryPolicy" /> class with the specified number of retry attempts and parameters defining the progressive delay between retries. /// </summary> /// <param name="errorDetectionStrategy">The <see cref="T:Microsoft.Azure.WebJobs.Extensions.EdgeHub.ITransientErrorDetectionStrategy" /> that is responsible for detecting transient conditions.</param> /// <param name="retryCount">The number of retry attempts.</param> /// <param name="initialInterval">The initial interval that will apply for the first retry.</param> /// <param name="increment">The incremental time value that will be used to calculate the progressive delay between retries.</param> public RetryPolicy(ITransientErrorDetectionStrategy errorDetectionStrategy, int retryCount, TimeSpan initialInterval, TimeSpan increment) : this(errorDetectionStrategy, new Incremental(retryCount, initialInterval, increment)) { }
/// <summary> /// Initializes a new instance of the <see cref="RetryAttribute"/> class with the specified number of retry attempts and backOff parameters for calculating the exponential delay between retries. /// </summary> /// <param name="errorDetectionStrategy">The <see cref="ITransientErrorDetectionStrategy" /> that is responsible for detecting transient conditions.</param> /// <param name="retryCount">The number of retry attempts.</param> /// <param name="minBackOff">The minimum backOff time. In milliseconds.</param> /// <param name="maxBackOff">The maximum backOff time. In milliseconds.</param> /// <param name="deltaBackOff">The time value that will be used to calculate a random delta in the exponential delay between retries. In milliseconds.</param> public RetryAttribute(ITransientErrorDetectionStrategy errorDetectionStrategy, int retryCount, double minBackOff, double maxBackOff, double deltaBackOff) : this(new RetryPolicy(errorDetectionStrategy, retryCount, TimeSpan.FromMilliseconds(minBackOff), TimeSpan.FromMilliseconds(maxBackOff), TimeSpan.FromMilliseconds(deltaBackOff))) { }
/// <summary> /// Initializes a new instance of the <see cref="RetryAttribute"/> class with the specified number of retry attempts and fixed time interval between retries. /// </summary> /// <param name="errorDetectionStrategy">The <see cref="ITransientErrorDetectionStrategy" /> that is responsible for detecting transient conditions.</param> /// <param name="retryCount">The number of retry attempts.</param> /// <param name="retryInterval">The interval between retries. In milliseconds.</param> public RetryAttribute(ITransientErrorDetectionStrategy errorDetectionStrategy, int retryCount, double retryInterval) : this(new RetryPolicy(errorDetectionStrategy, retryCount, TimeSpan.FromMilliseconds(retryInterval))) { }
/// <summary> /// Initializes a new instance of the <see cref="RetryAttribute"/> class with the specified number of retry attempts. /// </summary> /// <param name="errorDetectionStrategy">The <see cref="ITransientErrorDetectionStrategy" /> that is responsible for detecting transient conditions.</param> /// <param name="retryCount">The number of retry attempts.</param> public RetryAttribute(ITransientErrorDetectionStrategy errorDetectionStrategy, int retryCount) : this(new RetryPolicy(errorDetectionStrategy, retryCount)) { }
/// <summary> /// Initializes a new instance of the <see cref="T:Microsoft.Azure.Devices.Edge.Util.TransientFaultHandling.RetryPolicy" /> class with the specified number of retry attempts and fixed time interval between retries. /// </summary> /// <param name="errorDetectionStrategy">The <see cref="T:Microsoft.Azure.Devices.Edge.Util.TransientFaultHandling.ITransientErrorDetectionStrategy" /> that is responsible for detecting transient conditions.</param> /// <param name="retryCount">The number of retry attempts.</param> /// <param name="retryInterval">The interval between retries.</param> public RetryPolicy(ITransientErrorDetectionStrategy errorDetectionStrategy, int retryCount, TimeSpan retryInterval) : this(errorDetectionStrategy, new FixedInterval(retryCount, retryInterval)) { }
public TestExecutor(string connectionString, ITransientErrorDetectionStrategy errorDetectionStrategy, RetryStrategy retryStrategy) { _connectionManager = new ConnectionManager(connectionString, errorDetectionStrategy, retryStrategy); }
/// <summary> /// Initializes a new instance of the <see cref="T:GlebTeterin.ReliableSql.ReliableSqlConnection"/> class with the specified number of retry attempts and parameters defining the progressive delay between retries. /// </summary> public ReliableSqlConnection(string connectionString, ITransientErrorDetectionStrategy errorDetectionStrategy, int retryCount, TimeSpan initialInterval, TimeSpan increment) : this(connectionString, new SmartRetryPolicy(errorDetectionStrategy, retryCount, initialInterval, increment)) { }
private static RetryPolicy Exponential( ITransientErrorDetectionStrategy strategy, int retryCount = 3, double maxBackoffDelayInSeconds = 1024, double delta = 2) { var exponentialBackoff = new ExponentialBackoff(retryCount, TimeSpan.FromSeconds(0), TimeSpan.FromSeconds(maxBackoffDelayInSeconds), TimeSpan.FromSeconds(delta)); return new RetryPolicy(strategy, exponentialBackoff); }
/// <summary> /// Initializes a new instance of the <see cref="T:GlebTeterin.ReliableSql.ConnectionManager"/> class with a connection string and a <see cref="P:GlebTeterin.ReliableSql.AzureSqlStrategy"/>. /// </summary> public ConnectionManager(string connectionString, ITransientErrorDetectionStrategy errorDetectionStrategy, RetryStrategy retryStrategy) : this(connectionString, new SmartRetryPolicy(errorDetectionStrategy, retryStrategy)) { }
/// <summary> /// Initializes a new instance of the <see cref="T:GlebTeterin.ReliableSql.ConnectionManager"/> class with the specified number of retry attempts and fixed time interval between retries. /// </summary> public ConnectionManager(string connectionString, ITransientErrorDetectionStrategy errorDetectionStrategy, int retryCount, TimeSpan retryInterval) : this(connectionString, new SmartRetryPolicy(errorDetectionStrategy, retryCount, retryInterval)) { }
/// <summary> /// Initializes a new instance of the <see cref="T:Microsoft.Azure.WebJobs.Extensions.EdgeHub.RetryPolicy" /> class with the specified number of retry attempts and backoff parameters for calculating the exponential delay between retries. /// </summary> /// <param name="errorDetectionStrategy">The <see cref="T:Microsoft.Azure.WebJobs.Extensions.EdgeHub.ITransientErrorDetectionStrategy" /> that is responsible for detecting transient conditions.</param> /// <param name="retryCount">The number of retry attempts.</param> /// <param name="minBackoff">The minimum backoff time.</param> /// <param name="maxBackoff">The maximum backoff time.</param> /// <param name="deltaBackoff">The time value that will be used to calculate a random delta in the exponential delay between retries.</param> public RetryPolicy(ITransientErrorDetectionStrategy errorDetectionStrategy, int retryCount, TimeSpan minBackoff, TimeSpan maxBackoff, TimeSpan deltaBackoff) : this(errorDetectionStrategy, new ExponentialBackoff(retryCount, minBackoff, maxBackoff, deltaBackoff)) { }