From 7f4ed33464497f8bd7f3819d0f09730ccbba3bfe Mon Sep 17 00:00:00 2001 From: zengchen1024 Date: Tue, 24 Aug 2021 15:53:29 +0800 Subject: [PATCH 1/2] retry when get 502 --- gitee/client.go | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/gitee/client.go b/gitee/client.go index bf6510c..8aa2e85 100644 --- a/gitee/client.go +++ b/gitee/client.go @@ -186,8 +186,22 @@ func parameterToString(obj interface{}, collectionFormat string) string { } // callAPI do the request. -func (c *APIClient) callAPI(request *http.Request) (*http.Response, error) { - return c.cfg.HTTPClient.Do(request) +func (c *APIClient) callAPI(request *http.Request) (r *http.Response, err error) { + n := 3 + code := 502 + for i := 0; i < n; i++ { + r, err = c.cfg.HTTPClient.Do(request) + if err != nil || r == nil || r.StatusCode != code { + return + } + + j := i + 1 + if j >= n { + break + } + time.Sleep(time.Duration(j) * time.Second) + } + return } // Change base path to allow switching to mocks -- Gitee From 4fe1e59273c26de3eb9514e535ee287c0c18bdb5 Mon Sep 17 00:00:00 2001 From: zengchen1024 Date: Tue, 24 Aug 2021 16:41:42 +0800 Subject: [PATCH 2/2] upate --- gitee/client.go | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/gitee/client.go b/gitee/client.go index 8aa2e85..38d8f4b 100644 --- a/gitee/client.go +++ b/gitee/client.go @@ -187,14 +187,25 @@ func parameterToString(obj interface{}, collectionFormat string) string { // callAPI do the request. func (c *APIClient) callAPI(request *http.Request) (r *http.Response, err error) { + canRetry := func() bool { + if r != nil && r.StatusCode == 502 { + return true + } + + return err != nil && strings.Contains(strings.ToLower(err.Error()), "502 bad gateway") + } + n := 3 - code := 502 for i := 0; i < n; i++ { r, err = c.cfg.HTTPClient.Do(request) - if err != nil || r == nil || r.StatusCode != code { + if !canRetry() { return } + if err == nil && r != nil && r.Body != nil { + r.Body.Close() + } + j := i + 1 if j >= n { break -- Gitee