summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/jpillora/backoff
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/jpillora/backoff')
-rw-r--r--vendor/github.com/jpillora/backoff/backoff.go17
-rw-r--r--vendor/github.com/jpillora/backoff/go.mod3
2 files changed, 12 insertions, 8 deletions
diff --git a/vendor/github.com/jpillora/backoff/backoff.go b/vendor/github.com/jpillora/backoff/backoff.go
index b4941b6e..d113e689 100644
--- a/vendor/github.com/jpillora/backoff/backoff.go
+++ b/vendor/github.com/jpillora/backoff/backoff.go
@@ -4,6 +4,7 @@ package backoff
import (
"math"
"math/rand"
+ "sync/atomic"
"time"
)
@@ -14,19 +15,19 @@ import (
// Backoff is not generally concurrent-safe, but the ForAttempt method can
// be used concurrently.
type Backoff struct {
- //Factor is the multiplying factor for each increment step
- attempt, Factor float64
- //Jitter eases contention by randomizing backoff steps
+ attempt uint64
+ // Factor is the multiplying factor for each increment step
+ Factor float64
+ // Jitter eases contention by randomizing backoff steps
Jitter bool
- //Min and Max are the minimum and maximum values of the counter
+ // Min and Max are the minimum and maximum values of the counter
Min, Max time.Duration
}
// Duration returns the duration for the current attempt before incrementing
// the attempt counter. See ForAttempt.
func (b *Backoff) Duration() time.Duration {
- d := b.ForAttempt(b.attempt)
- b.attempt++
+ d := b.ForAttempt(float64(atomic.AddUint64(&b.attempt, 1) - 1))
return d
}
@@ -80,12 +81,12 @@ func (b *Backoff) ForAttempt(attempt float64) time.Duration {
// Reset restarts the current attempt counter at zero.
func (b *Backoff) Reset() {
- b.attempt = 0
+ atomic.StoreUint64(&b.attempt, 0)
}
// Attempt returns the current attempt counter value.
func (b *Backoff) Attempt() float64 {
- return b.attempt
+ return float64(atomic.LoadUint64(&b.attempt))
}
// Copy returns a backoff with equals constraints as the original
diff --git a/vendor/github.com/jpillora/backoff/go.mod b/vendor/github.com/jpillora/backoff/go.mod
new file mode 100644
index 00000000..7c41bc6f
--- /dev/null
+++ b/vendor/github.com/jpillora/backoff/go.mod
@@ -0,0 +1,3 @@
+module github.com/jpillora/backoff
+
+go 1.13