Files

38 lines
815 B
Go

package schedule
import (
"time"
"github.com/benbjohnson/clock"
"github.com/cenkalti/backoff/v4"
)
const retryStop = backoff.Stop
type exponentialBackoffRetryer struct {
backoff.BackOff
}
func newExponentialBackoffRetryer(
maxRetries int64,
initialRetryDelay time.Duration,
maxRetryDelay time.Duration,
randomizationFactor float64,
clock clock.Clock,
) *exponentialBackoffRetryer {
b := backoff.NewExponentialBackOff(
backoff.WithClockProvider(clock),
backoff.WithMaxInterval(maxRetryDelay),
backoff.WithInitialInterval(initialRetryDelay),
backoff.WithRandomizationFactor(randomizationFactor),
)
return &exponentialBackoffRetryer{
BackOff: backoff.WithMaxRetries(b, uint64(maxRetries)),
}
}
func (b *exponentialBackoffRetryer) NextAttemptIn() time.Duration {
return b.NextBackOff()
}