From 2a0856a4d86600f3382dcdad26a0dd06428f951a Mon Sep 17 00:00:00 2001 From: Mangirdas Date: Sun, 21 Jul 2019 19:00:40 +0100 Subject: [PATCH] make util/retry more generic --- staging/src/k8s.io/client-go/util/retry/util.go | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/staging/src/k8s.io/client-go/util/retry/util.go b/staging/src/k8s.io/client-go/util/retry/util.go index 3ac0840ad0c..c80ff0877fa 100644 --- a/staging/src/k8s.io/client-go/util/retry/util.go +++ b/staging/src/k8s.io/client-go/util/retry/util.go @@ -42,12 +42,12 @@ var DefaultBackoff = wait.Backoff{ Jitter: 0.1, } -// RetryConflict executes the provided function repeatedly, retrying if the server returns a conflicting -// write. Callers should preserve previous executions if they wish to retry changes. It performs an +// OnError executes the provided function repeatedly, retrying if the server returns a specified +// error. Callers should preserve previous executions if they wish to retry changes. It performs an // exponential backoff. // // var pod *api.Pod -// err := RetryOnConflict(DefaultBackoff, func() (err error) { +// err := retry.OnError(DefaultBackoff, errors.IsConflict, func() (err error) { // pod, err = c.Pods("mynamespace").UpdateStatus(podStatus) // return // }) @@ -58,14 +58,14 @@ var DefaultBackoff = wait.Backoff{ // ... // // TODO: Make Backoff an interface? -func RetryOnConflict(backoff wait.Backoff, fn func() error) error { +func OnError(backoff wait.Backoff, errorFunc func(error) bool, fn func() error) error { var lastConflictErr error err := wait.ExponentialBackoff(backoff, func() (bool, error) { err := fn() switch { case err == nil: return true, nil - case errors.IsConflict(err): + case errorFunc(err): lastConflictErr = err return false, nil default: @@ -77,3 +77,8 @@ func RetryOnConflict(backoff wait.Backoff, fn func() error) error { } return err } + +// RetryOnConflict executes the function function repeatedly, retrying if the server returns a conflicting +func RetryOnConflict(backoff wait.Backoff, fn func() error) error { + return OnError(backoff, errors.IsConflict, fn) +}