func WaitUntilObjectDeleted()

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
}