strategy

package
v5.0.0-rc8 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 22, 2021 License: MIT Imports: 1 Imported by: 4

Documentation

Overview

Package strategy provides a way to define how retry is performed.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Breaker

type Breaker = interface {
	// Done returns a channel that's closed when a cancellation signal occurred.
	Done() <-chan struct{}
	// If Done is not yet closed, Err returns nil.
	// If Done is closed, Err returns a non-nil error.
	// After Err returns a non-nil error, successive calls to Err return the same error.
	Err() error
}

A Breaker carries a cancellation signal to interrupt an action execution.

It is a subset of the built-in Context and github.com/kamilsk/breaker interfaces.

type Strategy

type Strategy = func(breaker Breaker, attempt uint, err error) bool

Strategy defines a function that Retry calls before every successive attempt to determine whether it should make the next attempt or not. Returning true allows for the next attempt to be made. Returning false halts the retrying process and returns the last error returned by the called Action.

The strategy will be passed an "attempt" number on each successive retry iteration, starting with a 0 value before the first attempt is actually made. This allows for a pre-action delay, etc.

func Backoff

func Backoff(algorithm func(attempt uint) time.Duration) Strategy

Backoff creates a Strategy that waits before each attempt, with a duration as defined by the given backoff.Algorithm.

func BackoffWithJitter

func BackoffWithJitter(
	algorithm func(attempt uint) time.Duration,
	transformation func(duration time.Duration) time.Duration,
) Strategy

BackoffWithJitter creates a Strategy that waits before each attempt, with a duration as defined by the given backoff.Algorithm and jitter.Transformation.

func Delay

func Delay(duration time.Duration) Strategy

Delay creates a Strategy that waits the given duration before the first attempt is made.

func Limit

func Limit(value uint) Strategy

Limit creates a Strategy that limits the number of attempts that Retry will make.

func Wait

func Wait(durations ...time.Duration) Strategy

Wait creates a Strategy that waits the given durations for each attempt after the first. If the number of attempts is greater than the number of durations provided, then the strategy uses the last duration provided.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL