package backoff
import "google.golang.org/grpc/internal/backoff"
Package backoff implement the backoff strategy for gRPC.
This is kept in internal until the gRPC project decides whether or not to allow alternative backoff strategies.
Index ¶
- Variables
- func RunF(ctx context.Context, f func() error, backoff func(int) time.Duration)
- type Exponential
- type Strategy
Variables ¶
var DefaultExponential = Exponential{Config: grpcbackoff.DefaultConfig}
DefaultExponential is an exponential backoff implementation using the default values for all the configurable knobs defined in https://github.com/grpc/grpc/blob/master/doc/connection-backoff.md.
ErrResetBackoff is the error to be returned by the function executed by RunF, to instruct the latter to reset its backoff state.
Functions ¶
func RunF ¶
RunF provides a convenient way to run a function f repeatedly until the context expires or f returns a non-nil error that is not ErrResetBackoff. When f returns ErrResetBackoff, RunF continues to run f, but resets its backoff state before doing so. backoff accepts an integer representing the number of retries, and returns the amount of time to backoff.
Types ¶
type Exponential ¶
type Exponential struct { // Config contains all options to configure the backoff algorithm. Config grpcbackoff.Config }
Exponential implements exponential backoff algorithm as defined in https://github.com/grpc/grpc/blob/master/doc/connection-backoff.md.
func (Exponential) Backoff ¶
func (bc Exponential) Backoff(retries int) time.Duration
Backoff returns the amount of time to wait before the next retry given the number of retries.
type Strategy ¶
type Strategy interface { // Backoff returns the amount of time to wait before the next retry given // the number of consecutive failures. Backoff(retries int) time.Duration }
Strategy defines the methodology for backing off after a grpc connection failure.
Source Files ¶
backoff.go
- Version
- v1.70.0 (latest)
- Published
- Jan 23, 2025
- Platform
- linux/amd64
- Imports
- 5 packages
- Last checked
- 19 hours ago –
Tools for package owners.