mirror of
https://github.com/ceph/ceph-csi.git
synced 2024-11-27 00:30:18 +00:00
ba40da7e36
Bumps [github.com/hashicorp/vault](https://github.com/hashicorp/vault) from 1.4.2 to 1.9.9. - [Release notes](https://github.com/hashicorp/vault/releases) - [Changelog](https://github.com/hashicorp/vault/blob/main/CHANGELOG.md) - [Commits](https://github.com/hashicorp/vault/compare/v1.4.2...v1.9.9) --- updated-dependencies: - dependency-name: github.com/hashicorp/vault dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com>
67 lines
1.2 KiB
Go
67 lines
1.2 KiB
Go
package backoff
|
|
|
|
import (
|
|
"context"
|
|
"time"
|
|
)
|
|
|
|
// BackOffContext is a backoff policy that stops retrying after the context
|
|
// is canceled.
|
|
type BackOffContext interface { // nolint: golint
|
|
BackOff
|
|
Context() context.Context
|
|
}
|
|
|
|
type backOffContext struct {
|
|
BackOff
|
|
ctx context.Context
|
|
}
|
|
|
|
// WithContext returns a BackOffContext with context ctx
|
|
//
|
|
// ctx must not be nil
|
|
func WithContext(b BackOff, ctx context.Context) BackOffContext { // nolint: golint
|
|
if ctx == nil {
|
|
panic("nil context")
|
|
}
|
|
|
|
if b, ok := b.(*backOffContext); ok {
|
|
return &backOffContext{
|
|
BackOff: b.BackOff,
|
|
ctx: ctx,
|
|
}
|
|
}
|
|
|
|
return &backOffContext{
|
|
BackOff: b,
|
|
ctx: ctx,
|
|
}
|
|
}
|
|
|
|
func getContext(b BackOff) context.Context {
|
|
if cb, ok := b.(BackOffContext); ok {
|
|
return cb.Context()
|
|
}
|
|
if tb, ok := b.(*backOffTries); ok {
|
|
return getContext(tb.delegate)
|
|
}
|
|
return context.Background()
|
|
}
|
|
|
|
func (b *backOffContext) Context() context.Context {
|
|
return b.ctx
|
|
}
|
|
|
|
func (b *backOffContext) NextBackOff() time.Duration {
|
|
select {
|
|
case <-b.ctx.Done():
|
|
return Stop
|
|
default:
|
|
}
|
|
next := b.BackOff.NextBackOff()
|
|
if deadline, ok := b.ctx.Deadline(); ok && deadline.Sub(time.Now()) < next { // nolint: gosimple
|
|
return Stop
|
|
}
|
|
return next
|
|
}
|