src: Add DMA localagent
[barometer.git] / src / dma / vendor / github.com / go-redis / redis / internal / internal.go
diff --git a/src/dma/vendor/github.com/go-redis/redis/internal/internal.go b/src/dma/vendor/github.com/go-redis/redis/internal/internal.go
new file mode 100644 (file)
index 0000000..ad3fc3c
--- /dev/null
@@ -0,0 +1,24 @@
+package internal
+
+import (
+       "math/rand"
+       "time"
+)
+
+// Retry backoff with jitter sleep to prevent overloaded conditions during intervals
+// https://www.awsarchitectureblog.com/2015/03/backoff.html
+func RetryBackoff(retry int, minBackoff, maxBackoff time.Duration) time.Duration {
+       if retry < 0 {
+               retry = 0
+       }
+
+       backoff := minBackoff << uint(retry)
+       if backoff > maxBackoff || backoff < minBackoff {
+               backoff = maxBackoff
+       }
+
+       if backoff == 0 {
+               return 0
+       }
+       return time.Duration(rand.Int63n(int64(backoff)))
+}