|
|
|
@ -8,7 +8,7 @@ import (
|
|
|
|
"time"
|
|
|
|
"time"
|
|
|
|
)
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
const (
|
|
|
|
var (
|
|
|
|
backoffBegin = 50 * time.Millisecond
|
|
|
|
backoffBegin = 50 * time.Millisecond
|
|
|
|
backoffUpper = 2 * time.Second
|
|
|
|
backoffUpper = 2 * time.Second
|
|
|
|
)
|
|
|
|
)
|
|
|
|
@ -18,6 +18,14 @@ type (
|
|
|
|
backoffFuncErr func() (retry bool, err error)
|
|
|
|
backoffFuncErr func() (retry bool, err error)
|
|
|
|
)
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
func mockBackoffDuration(d time.Duration) func() {
|
|
|
|
|
|
|
|
oldBegin, oldUpper := backoffBegin, backoffUpper
|
|
|
|
|
|
|
|
backoffBegin, backoffUpper = d, d
|
|
|
|
|
|
|
|
return func() {
|
|
|
|
|
|
|
|
backoffBegin, backoffUpper = oldBegin, oldUpper
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func backoffRetErr[T any](ctx context.Context, begin, upper time.Duration, end <-chan time.Time, fn backoffFuncRetErr[T]) (ret T, err error) {
|
|
|
|
func backoffRetErr[T any](ctx context.Context, begin, upper time.Duration, end <-chan time.Time, fn backoffFuncRetErr[T]) (ret T, err error) {
|
|
|
|
d := begin
|
|
|
|
d := begin
|
|
|
|
for {
|
|
|
|
for {
|
|
|
|
|