Class RetryAttempt (4.2.0)

public sealed class RetryAttempt

An attempt at a retriable operation. Use CreateRetrySequence(RetrySettings, IScheduler, Nullable<DateTime>, IClock, Nullable<TimeSpan>) or CreateRetrySequence(RetrySettings, IScheduler, Nullable<TimeSpan>) to create a sequence of attempts that follow the specified settings.

Inheritance

Object > RetryAttempt

Namespace

Google.Api.Gax.Grpc

Assembly

Google.Api.Gax.Grpc.dll

Properties

AttemptNumber

public int AttemptNumber { get; }

The 1-based number of this attempt. If this is equal to MaxAttempts for the settings used to create this attempt, ShouldRetry(Exception) will always return false.

Property Value
TypeDescription
Int32

JitteredBackoff

public TimeSpan JitteredBackoff { get; }

The time that will be used to sleep or delay in Backoff(CancellationToken) and BackoffAsync(CancellationToken). This has already had jitter applied to it.

Property Value
TypeDescription
TimeSpan

Methods

Backoff(CancellationToken)

public void Backoff(CancellationToken cancellationToken)

Synchronously sleeps for a period of JitteredBackoff.

Parameter
NameDescription
cancellationTokenCancellationToken

The cancellation token to apply to the sleep operation.

BackoffAsync(CancellationToken)

public Task BackoffAsync(CancellationToken cancellationToken)

Asynchronously delays for a period of JitteredBackoff.

Parameter
NameDescription
cancellationTokenCancellationToken

The cancellation token to apply to the delay operation.

Returns
TypeDescription
Task

CreateRetrySequence(RetrySettings, IScheduler, Nullable<DateTime>, IClock, Nullable<TimeSpan>)

public static IEnumerable<RetryAttempt> CreateRetrySequence(RetrySettings settings, IScheduler scheduler, DateTime? deadline, IClock clock, TimeSpan? initialBackoffOverride = null)

Returns a sequence of retry attempts. The sequence has MaxAttempts elements, and calling ShouldRetry(Exception) on the last attempt will always return false.

Parameters
NameDescription
settingsRetrySettings

The retry settings to create a sequence for. Must not be null.

schedulerIScheduler

The scheduler to use for delays.

deadlineNullable<DateTime>

The overall deadline for the operation.

clockIClock

The clock to use to compare the current time with the deadline.

initialBackoffOverrideNullable<TimeSpan>

An override value to allow an initial backoff which is not the same as InitialBackoff. This is typically to allow an "immediate first retry".

Returns
TypeDescription
IEnumerable<RetryAttempt>

CreateRetrySequence(RetrySettings, IScheduler, Nullable<TimeSpan>)

public static IEnumerable<RetryAttempt> CreateRetrySequence(RetrySettings settings, IScheduler scheduler, TimeSpan? initialBackoffOverride = null)

Returns a sequence of retry attempts. The sequence has MaxAttempts elements, and calling ShouldRetry(Exception) on the last attempt will always return false. This overload assumes no deadline, and so does not require a clock.

Parameters
NameDescription
settingsRetrySettings

The retry settings to create a sequence for. Must not be null.

schedulerIScheduler

The scheduler to use for delays.

initialBackoffOverrideNullable<TimeSpan>

An override value to allow an initial backoff which is not the same as InitialBackoff. This is typically to allow an "immediate first retry".

Returns
TypeDescription
IEnumerable<RetryAttempt>

ShouldRetry(Exception)

public bool ShouldRetry(Exception exception)

Indicates whether the operation should be retried when the given exception has been thrown. This will return false if the exception indicates that the operation shouldn't be retried, or the maximum number of attempts has been reached, or the next backoff would exceed the overall deadline. (It is assumed that Backoff(CancellationToken) or BackoffAsync(CancellationToken) will be called immediately afterwards.)

Parameter
NameDescription
exceptionException

The exception thrown by the retriable operation.

Returns
TypeDescription
Boolean

true if the operation should be retried; false otherwise.