Move code to pkg
This commit is contained in:
parent
bd4c822670
commit
f1b085fa36
465 changed files with 656 additions and 680 deletions
40
pkg/job/job.go
Normal file
40
pkg/job/job.go
Normal file
|
@ -0,0 +1,40 @@
|
|||
package job
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"github.com/cenkalti/backoff"
|
||||
)
|
||||
|
||||
var (
|
||||
_ backoff.BackOff = (*BackOff)(nil)
|
||||
)
|
||||
|
||||
const (
|
||||
defaultMinJobInterval = 30 * time.Second
|
||||
)
|
||||
|
||||
// BackOff is an exponential backoff implementation for long running jobs.
|
||||
// In long running jobs, an operation() that fails after a long Duration should not increments the backoff period.
|
||||
// If operation() takes more than MinJobInterval, Reset() is called in NextBackOff().
|
||||
type BackOff struct {
|
||||
*backoff.ExponentialBackOff
|
||||
MinJobInterval time.Duration
|
||||
}
|
||||
|
||||
// NewBackOff creates an instance of BackOff using default values.
|
||||
func NewBackOff(backOff *backoff.ExponentialBackOff) *BackOff {
|
||||
backOff.MaxElapsedTime = 0
|
||||
return &BackOff{
|
||||
ExponentialBackOff: backOff,
|
||||
MinJobInterval: defaultMinJobInterval,
|
||||
}
|
||||
}
|
||||
|
||||
// NextBackOff calculates the next backoff interval.
|
||||
func (b *BackOff) NextBackOff() time.Duration {
|
||||
if b.GetElapsedTime() >= b.MinJobInterval {
|
||||
b.Reset()
|
||||
}
|
||||
return b.ExponentialBackOff.NextBackOff()
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue