Files
threshold/internal/db/backoff.go
T
429247f407 [COMPLIANCE] Update Copyright Headers (#6282)
* [COMPLIANCE] Update Copyright and License Headers

* chore: make gen to generate files with copyright headers

* chore: update missed copyright headers

---------

Co-authored-by: hashicorp-copywrite[bot] <110428419+hashicorp-copywrite[bot]@users.noreply.github.com>
Co-authored-by: Justin Nguyen <justin.nguyen@hashicorp.com>
2026-01-28 11:05:07 -06:00

30 lines
552 B
Go

// Copyright IBM Corp. 2020, 2025
// SPDX-License-Identifier: BUSL-1.1
package db
import (
"math"
"math/rand"
"time"
)
type Backoff interface {
Duration(attemptNumber uint) time.Duration
}
type ConstBackoff struct {
Amount time.Duration
}
func (b ConstBackoff) Duration(attempt uint) time.Duration {
return time.Millisecond * time.Duration(b.Amount)
}
type ExpBackoff struct{}
func (b ExpBackoff) Duration(attempt uint) time.Duration {
r := rand.Float64()
return time.Millisecond * time.Duration(math.Exp2(float64(attempt))*5*(r+0.5))
}