mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-19 09:52:49 +00:00
wait: ExponentialBackoffWithContext should take context-aware fn
The condition methods will eventually all take a context. Since we have been provided one, alter the accepted condition type and change the four references in tree. Collers of ExponentialBackoffWithContext should use a condition aware function (ConditionWithContextFunc). If the context can be ignored the helper ConditionFunc.WithContext can be used to convert an existing function to the new type.
This commit is contained in:
parent
7b01daba71
commit
34bfdc3635
@ -729,7 +729,7 @@ func poller(interval, timeout time.Duration) WaitWithContextFunc {
|
|||||||
|
|
||||||
// ExponentialBackoffWithContext works with a request context and a Backoff. It ensures that the retry wait never
|
// ExponentialBackoffWithContext works with a request context and a Backoff. It ensures that the retry wait never
|
||||||
// exceeds the deadline specified by the request context.
|
// exceeds the deadline specified by the request context.
|
||||||
func ExponentialBackoffWithContext(ctx context.Context, backoff Backoff, condition ConditionFunc) error {
|
func ExponentialBackoffWithContext(ctx context.Context, backoff Backoff, condition ConditionWithContextFunc) error {
|
||||||
for backoff.Steps > 0 {
|
for backoff.Steps > 0 {
|
||||||
select {
|
select {
|
||||||
case <-ctx.Done():
|
case <-ctx.Done():
|
||||||
@ -737,7 +737,7 @@ func ExponentialBackoffWithContext(ctx context.Context, backoff Backoff, conditi
|
|||||||
default:
|
default:
|
||||||
}
|
}
|
||||||
|
|
||||||
if ok, err := runConditionWithCrashProtection(condition); err != nil || ok {
|
if ok, err := runConditionWithCrashProtectionWithContext(ctx, condition); err != nil || ok {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -875,7 +875,7 @@ func TestExponentialBackoffWithContext(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
attempts := 0
|
attempts := 0
|
||||||
err := ExponentialBackoffWithContext(test.ctxGetter(), backoff, func() (bool, error) {
|
err := ExponentialBackoffWithContext(test.ctxGetter(), backoff, func(_ context.Context) (bool, error) {
|
||||||
attempts++
|
attempts++
|
||||||
return test.callback(attempts)
|
return test.callback(attempts)
|
||||||
})
|
})
|
||||||
|
@ -121,7 +121,7 @@ func WithExponentialBackoff(ctx context.Context, retryBackoff wait.Backoff, webh
|
|||||||
// having a webhook error allows us to track the last actual webhook error for requests that
|
// having a webhook error allows us to track the last actual webhook error for requests that
|
||||||
// are later cancelled or time out.
|
// are later cancelled or time out.
|
||||||
var webhookErr error
|
var webhookErr error
|
||||||
err := wait.ExponentialBackoffWithContext(ctx, retryBackoff, func() (bool, error) {
|
err := wait.ExponentialBackoffWithContext(ctx, retryBackoff, func(_ context.Context) (bool, error) {
|
||||||
webhookErr = webhookFn()
|
webhookErr = webhookFn()
|
||||||
if shouldRetry(webhookErr) {
|
if shouldRetry(webhookErr) {
|
||||||
return false, nil
|
return false, nil
|
||||||
|
@ -673,7 +673,7 @@ func waitForDetachAndGrabMetrics(ctx context.Context, oldMetrics *storageControl
|
|||||||
oldDetachCount = 0
|
oldDetachCount = 0
|
||||||
}
|
}
|
||||||
|
|
||||||
verifyMetricFunc := func() (bool, error) {
|
verifyMetricFunc := func(ctx context.Context) (bool, error) {
|
||||||
updatedMetrics, err := metricsGrabber.GrabFromControllerManager(ctx)
|
updatedMetrics, err := metricsGrabber.GrabFromControllerManager(ctx)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -821,7 +821,7 @@ func waitForPVControllerSync(ctx context.Context, metricsGrabber *e2emetrics.Gra
|
|||||||
Factor: 1.2,
|
Factor: 1.2,
|
||||||
Steps: 21,
|
Steps: 21,
|
||||||
}
|
}
|
||||||
verifyMetricFunc := func() (bool, error) {
|
verifyMetricFunc := func(ctx context.Context) (bool, error) {
|
||||||
updatedMetrics, err := metricsGrabber.GrabFromControllerManager(ctx)
|
updatedMetrics, err := metricsGrabber.GrabFromControllerManager(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
framework.Logf("Error fetching controller-manager metrics")
|
framework.Logf("Error fetching controller-manager metrics")
|
||||||
@ -866,7 +866,7 @@ func waitForADControllerStatesMetrics(ctx context.Context, metricsGrabber *e2eme
|
|||||||
Factor: 1.2,
|
Factor: 1.2,
|
||||||
Steps: 21,
|
Steps: 21,
|
||||||
}
|
}
|
||||||
verifyMetricFunc := func() (bool, error) {
|
verifyMetricFunc := func(ctx context.Context) (bool, error) {
|
||||||
updatedMetrics, err := metricsGrabber.GrabFromControllerManager(ctx)
|
updatedMetrics, err := metricsGrabber.GrabFromControllerManager(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
e2eskipper.Skipf("Could not get controller-manager metrics - skipping")
|
e2eskipper.Skipf("Could not get controller-manager metrics - skipping")
|
||||||
|
Loading…
Reference in New Issue
Block a user