public sealed class RetrySettingsSettings for retrying RPCs.
Namespace
Google.Api.Gax.GrpcAssembly
Google.Api.Gax.Grpc.dll
Properties
BackoffJitter
public RetrySettings.IJitter BackoffJitter { get; }The delay jitter to apply for delays, defaulting to RandomJitter. This is never null.
| Property Value | |
|---|---|
| Type | Description |
RetrySettingsIJitter |
|
"Jitter" is used to introduce randomness into the pattern of delays. This is to avoid multiple clients performing the same delay pattern starting at the same point in time, leading to higher-than-necessary contention. The default jitter simply takes each maximum delay and returns an actual delay which is a uniformly random value between 0 and the maximum. This is good enough for most applications, but makes precise testing difficult.
BackoffMultiplier
public double BackoffMultiplier { get; }The multiplier to apply to the backoff on each iteration; always greater than or equal to 1.0.
| Property Value | |
|---|---|
| Type | Description |
double |
|
As an example, a multiplier of 2.0 with an initial backoff of 0.1s on an RPC would then apply a backoff of 0.2s, then 0.4s until it is capped by MaxBackoff.
InitialBackoff
public TimeSpan InitialBackoff { get; }The backoff time between the first attempt and the first retry. Always non-negative.
| Property Value | |
|---|---|
| Type | Description |
TimeSpan |
|
MaxAttempts
public int MaxAttempts { get; }The maximum number of attempts to make. Always greater than or equal to 1.
| Property Value | |
|---|---|
| Type | Description |
int |
|
MaxBackoff
public TimeSpan MaxBackoff { get; }The maximum backoff time between retries. Always non-negative.
| Property Value | |
|---|---|
| Type | Description |
TimeSpan |
|
NoJitter
public static RetrySettings.IJitter NoJitter { get; }A jitter which simply returns the specified maximum delay.
| Property Value | |
|---|---|
| Type | Description |
RetrySettingsIJitter |
|
RandomJitter
public static RetrySettings.IJitter RandomJitter { get; }The default jitter which returns a uniformly distributed random delay between 0 and the specified maximum.
| Property Value | |
|---|---|
| Type | Description |
RetrySettingsIJitter |
|
RetryFilter
public Predicate<Exception> RetryFilter { get; }A predicate to determine whether or not a particular exception should cause the operation to be retried. Usually this is simply a matter of checking the status codes. This is never null.
| Property Value | |
|---|---|
| Type | Description |
PredicateException |
|
Methods
FilterForStatusCodes(params StatusCode[])
public static Predicate<Exception> FilterForStatusCodes(params StatusCode[] statusCodes)Creates a retry filter based on status codes.
| Parameter | |
|---|---|
| Name | Description |
statusCodes |
StatusCodeThe status codes to retry. Must not be null. |
| Returns | |
|---|---|
| Type | Description |
PredicateException |
A retry filter based on status codes. |
FilterForStatusCodes(IEnumerable<StatusCode>)
public static Predicate<Exception> FilterForStatusCodes(IEnumerable<StatusCode> statusCodes)Creates a retry filter based on status codes.
| Parameter | |
|---|---|
| Name | Description |
statusCodes |
IEnumerableStatusCodeThe status codes to retry. Must not be null. |
| Returns | |
|---|---|
| Type | Description |
PredicateException |
A retry filter based on status codes. |
FromConstantBackoff(int, TimeSpan, Predicate<Exception>, IJitter)
public static RetrySettings FromConstantBackoff(int maxAttempts, TimeSpan backoff, Predicate<Exception> retryFilter, RetrySettings.IJitter backoffJitter = null)Returns a RetrySettings using the specified maximum number of attempts and a constant backoff.
Jitter is still applied to each backoff, but the "base" value of the backoff is always backoff.
| Parameters | |
|---|---|
| Name | Description |
maxAttempts |
intThe maximum number of attempts to make. Must be positive. |
backoff |
TimeSpanThe backoff after each failure. Must be non-negative. |
retryFilter |
PredicateExceptionThe predicate to use to check whether an error should be retried. Must not be null. |
backoffJitter |
RetrySettingsIJitterThe jitter to use on each backoff. May be null, in which case RandomJitter is used. |
| Returns | |
|---|---|
| Type | Description |
RetrySettings |
A retry with constant backoff. |
FromExponentialBackoff(int, TimeSpan, TimeSpan, double, Predicate<Exception>, IJitter)
public static RetrySettings FromExponentialBackoff(int maxAttempts, TimeSpan initialBackoff, TimeSpan maxBackoff, double backoffMultiplier, Predicate<Exception> retryFilter, RetrySettings.IJitter backoffJitter = null)Returns a RetrySettings using the specified maximum number of attempts and an exponential backoff.
| Parameters | |
|---|---|
| Name | Description |
maxAttempts |
intThe maximum number of attempts to make. Must be positive. |
initialBackoff |
TimeSpanThe backoff after the initial failure. Must be non-negative. |
maxBackoff |
TimeSpanThe maximum backoff. Must be at least |
backoffMultiplier |
doubleThe multiplier to apply to backoff times. Must be at least 1.0. |
retryFilter |
PredicateExceptionThe predicate to use to check whether an error should be retried. Must not be null. |
backoffJitter |
RetrySettingsIJitterThe jitter to use on each backoff. May be null, in which case RandomJitter is used. |
| Returns | |
|---|---|
| Type | Description |
RetrySettings |
A retry with exponential backoff. |
NextBackoff(TimeSpan)
public TimeSpan NextBackoff(TimeSpan currentBackoff)Works out the next backoff from the current one, based on the multiplier and maximum.
| Parameter | |
|---|---|
| Name | Description |
currentBackoff |
TimeSpanThe current backoff to use as a basis for the next one. |
| Returns | |
|---|---|
| Type | Description |
TimeSpan |
The next backoff to use, which is always at least InitialBackoff and at most MaxBackoff. |