in pkg/common/apiretry/apiretry.go [39:71]
func WaitUntilObjectDeleted(ctx context.Context, get func() error) error {
backOffPeriod := wait.Backoff{
Steps: 5,
Duration: 500 * time.Millisecond,
Factor: 1.6,
Jitter: 0.2,
}
backOffPeriod.Cap = time.Second * 5
var lastErr error
err := wait.ExponentialBackoffWithContext(ctx, backOffPeriod, func(_ context.Context) (bool, error) {
err := get()
switch {
case err == nil:
lastErr = err
return false, nil
case apierrors.IsNotFound(err):
return true, nil
case retriable(err):
lastErr = err
return false, nil
default:
return false, err
}
})
if wait.Interrupted(err) {
if lastErr == nil {
return wait.ErrorInterrupted(errors.New("timed out or the context ended"))
}
err = lastErr
}
return err
}