change behavior of flag disable_http_retry_backoff (#2426)
now it does not attempt any retry, instead of attempting all retries immediately example: cannot reach LAPI Before: $ CROWDSEC_FEATURE_DISABLE_HTTP_RETRY_BACKOFF=true cscli decisions list ERRO[27-07-2023 10:44:44] error while performing request: dial tcp [::1]:8080: connect: connection refused; 4 retries left INFO[27-07-2023 10:44:44] retrying in 0 seconds (attempt 2 of 5) [...] ERRO[27-07-2023 10:44:44] error while performing request: dial tcp [::1]:8080: connect: connection refused; 1 retries left INFO[27-07-2023 10:44:44] retrying in 0 seconds (attempt 5 of 5) ERRO[27-07-2023 10:44:44] error while performing request: dial tcp [::1]:8080: connect: connection refused; 0 retries left FATA[27-07-2023 10:44:44] Unable to list decisions : performing request: Get "http://localhost:8080/v1/alerts?has_active_decision=true&include_capi=false&limit=100": could not get jwt token: Post "http://localhost:8080/v1/watchers/login": dial tcp [::1]:8080: connect: connection refused After: $ CROWDSEC_FEATURE_DISABLE_HTTP_RETRY_BACKOFF=true ./test/local/bin/cscli decisions list FATA[11-08-2023 16:49:58] unable to retrieve decisions: performing request: Get "http://127.0.0.1:8080/v1/alerts?has_active_decision=true&include_capi=false&limit=100": could not get jwt token: Post "http://127.0.0.1:8080/v1/watchers/login": dial tcp 127.0.0.1:8080: connect: connection refused
This commit is contained in:
parent
caaed7c515
commit
6a6501691a
|
@ -96,10 +96,16 @@ func (r retryRoundTripper) ShouldRetry(statusCode int) bool {
|
||||||
func (r retryRoundTripper) RoundTrip(req *http.Request) (*http.Response, error) {
|
func (r retryRoundTripper) RoundTrip(req *http.Request) (*http.Response, error) {
|
||||||
var resp *http.Response
|
var resp *http.Response
|
||||||
var err error
|
var err error
|
||||||
|
|
||||||
backoff := 0
|
backoff := 0
|
||||||
for i := 0; i < r.maxAttempts; i++ {
|
maxAttempts := r.maxAttempts
|
||||||
|
if fflag.DisableHttpRetryBackoff.IsEnabled() {
|
||||||
|
maxAttempts = 1
|
||||||
|
}
|
||||||
|
|
||||||
|
for i := 0; i < maxAttempts; i++ {
|
||||||
if i > 0 {
|
if i > 0 {
|
||||||
if r.withBackOff && !fflag.DisableHttpRetryBackoff.IsEnabled() {
|
if r.withBackOff {
|
||||||
backoff += 10 + rand.Intn(20)
|
backoff += 10 + rand.Intn(20)
|
||||||
}
|
}
|
||||||
log.Infof("retrying in %d seconds (attempt %d of %d)", backoff, i+1, r.maxAttempts)
|
log.Infof("retrying in %d seconds (attempt %d of %d)", backoff, i+1, r.maxAttempts)
|
||||||
|
@ -115,7 +121,10 @@ func (r retryRoundTripper) RoundTrip(req *http.Request) (*http.Response, error)
|
||||||
clonedReq := cloneRequest(req)
|
clonedReq := cloneRequest(req)
|
||||||
resp, err = r.next.RoundTrip(clonedReq)
|
resp, err = r.next.RoundTrip(clonedReq)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Errorf("error while performing request: %s; %d retries left", err, r.maxAttempts-i-1)
|
left := maxAttempts - i - 1
|
||||||
|
if left > 0 {
|
||||||
|
log.Errorf("error while performing request: %s; %d retries left", err, left)
|
||||||
|
}
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
if !r.ShouldRetry(resp.StatusCode) {
|
if !r.ShouldRetry(resp.StatusCode) {
|
||||||
|
@ -264,7 +273,9 @@ func (t *JWTTransport) RoundTrip(req *http.Request) (*http.Response, error) {
|
||||||
return resp, fmt.Errorf("performing jwt auth: %w", err)
|
return resp, fmt.Errorf("performing jwt auth: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
log.Debugf("resp-jwt: %d", resp.StatusCode)
|
if resp != nil {
|
||||||
|
log.Debugf("resp-jwt: %d", resp.StatusCode)
|
||||||
|
}
|
||||||
|
|
||||||
return resp, nil
|
return resp, nil
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue