Documentation ¶
Overview ¶
Package backoff provides an exponential-backoff implementation.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Backoff ¶
type Backoff struct { // Factor is the multiplying factor for each increment step. // // Defaults to 2. Factor float64 // Jitter eases contention by randomizing backoff steps. // // Defaults to false. Jitter bool // Minimum value of the counter. // // Defaults to 100 milliseconds. Min time.Duration // Maximum value of the counter. // // Defaults to 10 seconds. Max time.Duration // contains filtered or unexported fields }
Backoff is a time.Duration counter, starting at Min. After every call to the Duration method the current timing is multiplied by Factor, but it never exceeds Max.
Backoff is not generally concurrent-safe, but the ForAttempt method can be used concurrently.
func (*Backoff) Duration ¶
Duration returns the duration for the current attempt before incrementing the attempt counter. See ForAttempt.
func (*Backoff) ForAttempt ¶
ForAttempt returns the duration for a specific attempt. This is useful if you have a large number of independent Backoffs, but don't want use unnecessary memory storing the Backoff parameters per Backoff. The first attempt should be 0.
ForAttempt is concurrent-safe.