Documentation ¶
Overview ¶
Package retry is a retry with backoff implementation
Index ¶
- func AddJitter(duration time.Duration, jitter time.Duration) time.Duration
- func NWithBackoff(backoff Backoff, n int, fn func() error) error
- func NWithBackoffCtx(ctx context.Context, backoff Backoff, n int, fn func() error) error
- func WithBackoff(backoff Backoff, fn func() error) error
- func WithBackoffCtx(ctx context.Context, backoff Backoff, fn func() error) error
- type Backoff
- type DefaultRetriable
- type DefaultRetriableError
- type Retriable
- type RetriableError
- type SimpleBackoff
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func AddJitter ¶
AddJitter adds an amount of jitter between 0 and the given jitter to the given duration
func NWithBackoff ¶
NWithBackoff takes a Backoff, a maximum number of tries 'n', and a function that returns an error. The function is called until either it does not return an error or the maximum tries have been reached. If the error returned is Retriable, the Retriability of it will be respected. If the number of tries is exhausted, the last error will be returned.
func NWithBackoffCtx ¶
NWithBackoffCtx takes a context, a Backoff, a maximum number of tries 'n', and a function that returns an error. The function is called until it does not return an error, the context is done, or the maximum tries have been reached. If the error returned is Retriable, the Retriability of it will be respected. If the number of tries is exhausted, the last error will be returned.
func WithBackoff ¶
WithBackoff takes a Backoff and a function to call that returns an error If the error is nil then the function will no longer be called If the error is Retriable then that will be used to determine if it should be retried
func WithBackoffCtx ¶
WithBackoffCtx takes a context, a Backoff, and a function to call that returns an error If the context is done, nil will be returned If the error is nil then the function will no longer be called If the error is Retriable then that will be used to determine if it should be retried
Types ¶
type DefaultRetriable ¶
type DefaultRetriable struct {
// contains filtered or unexported fields
}
DefaultRetriable is the default retryable
type DefaultRetriableError ¶
type DefaultRetriableError struct { Retriable // contains filtered or unexported fields }
DefaultRetriableError is the default retriable error
type RetriableError ¶
RetriableError interface
func NewRetriableError ¶
func NewRetriableError(retriable Retriable, err error) RetriableError
NewRetriableError returns a new retriable error
type SimpleBackoff ¶
type SimpleBackoff struct {
// contains filtered or unexported fields
}
SimpleBackoff is the default simple backoff
func NewSimpleBackoff ¶
func NewSimpleBackoff(min, max time.Duration, jitterMultiple, multiple float64) *SimpleBackoff
NewSimpleBackoff creates a Backoff which ranges from min to max increasing by multiple each time. It also adds (and yes, the jitter is always added, never subtracted) a random amount of jitter up to jitterMultiple percent (that is, jitterMultiple = 0.0 is no jitter, 0.15 is 15% added jitter). The total time/ may exceed "max" when accounting for jitter, such that the absolute max is max + max * jitterMultiple
func (*SimpleBackoff) Duration ¶
func (sb *SimpleBackoff) Duration() time.Duration
Duration gets the current duration including jitter