From f63ff80d467eb2f3dbdebb33d4f75c1f5fbbebb4 Mon Sep 17 00:00:00 2001 From: Vasiliy Tolstov Date: Mon, 7 Dec 2020 21:54:45 +0300 Subject: [PATCH] backport micro 820f59869617dee18c9a699c8e01d7a6b080f854 Signed-off-by: Vasiliy Tolstov --- client/client.go | 2 +- client/retry.go | 17 +++++++++-------- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/client/client.go b/client/client.go index 664943f4..106b387f 100644 --- a/client/client.go +++ b/client/client.go @@ -100,7 +100,7 @@ var ( // DefaultBackoff is the default backoff function for retries DefaultBackoff = exponentialBackoff // DefaultRetry is the default check-for-retry function for retries - DefaultRetry = RetryOnError + DefaultRetry = RetryNever // DefaultRetries is the default number of times a request is tried DefaultRetries = 0 // DefaultRequestTimeout is the default request timeout diff --git a/client/retry.go b/client/retry.go index 95b48297..26f8d2dd 100644 --- a/client/retry.go +++ b/client/retry.go @@ -14,22 +14,23 @@ func RetryAlways(ctx context.Context, req Request, retryCount int, err error) (b return true, nil } +// RetryNever never retry on error +func RetryNever(ctx context.Context, req Request, retryCount int, err error) (bool, error) { + return false, nil +} + // RetryOnError retries a request on a 500 or timeout error func RetryOnError(ctx context.Context, req Request, retryCount int, err error) (bool, error) { if err == nil { return false, nil } - e := errors.Parse(err.Error()) - if e == nil { - return false, nil - } - - switch e.Code { + me := errors.FromError(err) + switch me.Code { // retry on timeout or internal server error case 408, 500: return true, nil - default: - return false, nil } + + return false, nil }