59 lines
1.9 KiB
TypeScript
59 lines
1.9 KiB
TypeScript
import { Interceptor, StatusObject } from '@grpc/grpc-js';
|
|
export interface GrpcRetryOptions {
|
|
/**
|
|
* A function which accepts the current retry attempt (starts at 1) and returns the millisecond
|
|
* delay that should be applied before the next retry.
|
|
*/
|
|
delayFunction: (attempt: number, status: StatusObject) => number;
|
|
/**
|
|
* A function which accepts a failed status object and returns true if the call should be retried
|
|
*/
|
|
retryableDecider: (attempt: number, status: StatusObject) => boolean;
|
|
}
|
|
/**
|
|
* Options for the backoff formula: `factor ^ attempt * initialIntervalMs(status) * jitter(maxJitter)`
|
|
*/
|
|
export interface BackoffOptions {
|
|
/**
|
|
* Exponential backoff factor
|
|
*
|
|
* @default 1.7
|
|
*/
|
|
factor: number;
|
|
/**
|
|
* Maximum number of attempts
|
|
*
|
|
* @default 10
|
|
*/
|
|
maxAttempts: number;
|
|
/**
|
|
* Maximum amount of jitter to apply
|
|
*
|
|
* @default 0.2
|
|
*/
|
|
maxJitter: number;
|
|
/**
|
|
* Function that returns the "initial" backoff interval based on the returned status.
|
|
*
|
|
* The default is 1 second for RESOURCE_EXHAUSTED errors and 100 millis for other retryable errors.
|
|
*/
|
|
initialIntervalMs(status: StatusObject): number;
|
|
/**
|
|
* Function that returns the "maximum" backoff interval based on the returned status.
|
|
*
|
|
* The default is 5 seconds regardless of the status.
|
|
*/
|
|
maxIntervalMs(status: StatusObject): number;
|
|
}
|
|
/**
|
|
* Generates the default retry behavior based on given backoff options
|
|
*/
|
|
export declare function defaultGrpcRetryOptions(options?: Partial<BackoffOptions>): GrpcRetryOptions;
|
|
export declare function isRetryableError(status: StatusObject): boolean;
|
|
/**
|
|
* Returns a GRPC interceptor that will perform automatic retries for some types of failed calls
|
|
*
|
|
* @param retryOptions Options for the retry interceptor
|
|
*/
|
|
export declare function makeGrpcRetryInterceptor(retryOptions: GrpcRetryOptions): Interceptor;
|