public sealed class RetrySettingsSettings for retrying RPCs.
Namespace
GoogleGoogle.ApiGaxGrpcAssembly
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.  |