backoff

package module
v0.52.1 Latest Latest
Warning

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

Go to latest
Published: Apr 3, 2024 License: Apache-2.0 Imports: 3 Imported by: 4

Documentation

Overview

Package backoff provides backoff mechanisms

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type ExpBackoffPolicy

type ExpBackoffPolicy struct {
	// MinBackoffFactor controls the overlap between consecutive retry interval ranges. When
	// set to `2`, there is a guarantee that there will be no overlap. The overlap
	// will asymptotically approach 50% the higher the value is set.
	MinBackoffFactor float64

	// BaseBackoffTime controls the rate of exponential growth. Also, you can calculate the start
	// of the very first retry interval range by evaluating the following expression:
	// baseBackoffTime / minBackoffFactor * 2
	BaseBackoffTime float64

	// MaxBackoffTime is the maximum number of seconds to wait for a retry.
	MaxBackoffTime float64

	// RecoveryInterval controls how many retry interval ranges to step down for an endpoint
	// upon success. Increasing this should only be considered when maxBackoffTime
	// is particularly high or if our intake team is particularly confident.
	RecoveryInterval int

	// MaxErrors derived value is the number of errors it will take to reach the maxBackoffTime.
	MaxErrors int
}

ExpBackoffPolicy contains parameters and logic necessary to implement an exponential backoff strategy when handling errors.

func (*ExpBackoffPolicy) DecError

func (e *ExpBackoffPolicy) DecError(numErrors int) int

DecError decrements the error counter down to zero at RecoveryInterval rate

func (*ExpBackoffPolicy) GetBackoffDuration

func (e *ExpBackoffPolicy) GetBackoffDuration(numErrors int) time.Duration

GetBackoffDuration returns amount of time to sleep after numErrors error

func (*ExpBackoffPolicy) IncError

func (e *ExpBackoffPolicy) IncError(numErrors int) int

IncError increments the error counter up to MaxErrors

type Policy

type Policy interface {
	// GetBackoffDuration returns the backoff duration for the given number of errors
	GetBackoffDuration(numErrors int) time.Duration
	// IncError increments the number of errors and returns the new value
	IncError(numErrors int) int
	// DecError decrements the number of errors and returns the new value
	DecError(numErrors int) int
}

Policy is the common interface for all backoff policies

func NewExpBackoffPolicy

func NewExpBackoffPolicy(minBackoffFactor, baseBackoffTime, maxBackoffTime float64, recoveryInterval int, recoveryReset bool) Policy

NewExpBackoffPolicy constructs new Backoff object with given parameters

Jump to

Keyboard shortcuts

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