exponential_backoff

package
v1.0.6 Latest Latest
Warning

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

Go to latest
Published: Dec 15, 2021 License: Apache-2.0 Imports: 3 Imported by: 1

Documentation

Index

Constants

View Source
const ExponentialDelayFactor float64 = 2.0 // Each delta delay is twice bigger.
View Source
const ExponentialDelayRandomMs = 1000 // Each delay has random additional milliseconds.
View Source
const MaxExponentialBackoffDelay = time.Duration(32 * time.Second)

Variables

View Source
var ExponentialCalculationsCount = int(math.Log(MaxExponentialBackoffDelay.Seconds()) / math.Log(ExponentialDelayFactor))

Count of exponential calculations before return max delay to prevent overflow with big numbers.

Functions

func CalculateDelay

func CalculateDelay(initialDelay time.Duration, retryCount int) time.Duration

CalculateDelay returns delay distributed from initialDelay to default maxDelay (32s)

Example:

Retry 0: 5s
Retry 1: 6s
Retry 2: 7.8s
Retry 3: 9.8s
Retry 4: 13s
Retry 5: 21s
Retry 6: 32s
Retry 7: 32s

func CalculateDelayWithMax

func CalculateDelayWithMax(initialDelay time.Duration, maxDelay time.Duration, retryCount int) time.Duration

CalculateDelayWithMax returns delay distributed from initialDelay to maxDelay based on retryCount number.

Delay for retry number 0 is an initialDelay.

Calculation of exponential delays starts from retry number 1.

After ExponentialCalculationsCount rounds of calculations, maxDelay is returned.

Types

This section is empty.

Jump to

Keyboard shortcuts

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