Skip to content

Commit 72d720c

Browse files
fix(COD-1559): Add some retrying in updater.go (#1350)
1 parent b16e7ef commit 72d720c

File tree

1 file changed

+23
-10
lines changed

1 file changed

+23
-10
lines changed

lwupdater/updater.go

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ import (
2929
"strings"
3030
"time"
3131

32+
"github.com/cenkalti/backoff/v4"
3233
"github.com/pkg/errors"
3334
)
3435

@@ -147,22 +148,34 @@ func getGitRelease(project, version string) (*gitReleaseResponse, error) {
147148
req.Header.Set("Authorization", "Bearer "+token)
148149
}
149150

150-
resp, err := c.Do(req)
151+
var resp *http.Response
152+
err = backoff.Retry(func() error {
153+
resp, err = c.Do(req)
154+
if err != nil {
155+
return err
156+
}
157+
if resp.StatusCode < 200 || resp.StatusCode > 299 {
158+
return errors.New(resp.Status)
159+
}
160+
return nil
161+
}, backoffStrategy())
151162
if err != nil {
152163
return nil, err
153164
}
154165

155-
if c := resp.StatusCode; c >= 200 && c <= 299 {
156-
var gitRelRes gitReleaseResponse
157-
if err := json.NewDecoder(resp.Body).Decode(&gitRelRes); err != nil {
158-
return nil, err
159-
}
160-
161-
return &gitRelRes, nil
166+
var gitRelRes gitReleaseResponse
167+
if err := json.NewDecoder(resp.Body).Decode(&gitRelRes); err != nil {
168+
return nil, err
162169
}
163170

164-
// not a successful response, throw an error
165-
return nil, errors.New(resp.Status)
171+
return &gitRelRes, nil
172+
}
173+
174+
func backoffStrategy() *backoff.ExponentialBackOff {
175+
strategy := backoff.NewExponentialBackOff()
176+
strategy.InitialInterval = 2 * time.Second
177+
strategy.MaxElapsedTime = 1 * time.Minute
178+
return strategy
166179
}
167180

168181
type gitReleaseResponse struct {

0 commit comments

Comments
 (0)