lib/promscrape: retry performing the request to the server for up to 3 times before giving up when it closes keep-alive connections

Updates https://github.com/VictoriaMetrics/VictoriaMetrics/issues/580
This commit is contained in:
Aliaksandr Valialkin 2020-06-23 12:25:02 +03:00
parent 97557c96d5
commit a80e852aab

View File

@ -133,6 +133,8 @@ var (
)
func doRequestWithPossibleRetry(hc *fasthttp.HostClient, req *fasthttp.Request, resp *fasthttp.Response) error {
attempts := 0
again:
// There is no need in calling DoTimeout, since the timeout must be already set in hc.ReadTimeout.
err := hc.Do(req, resp)
if err == nil {
@ -142,5 +144,9 @@ func doRequestWithPossibleRetry(hc *fasthttp.HostClient, req *fasthttp.Request,
return err
}
// Retry request if the server closed the keep-alive connection during the first attempt.
return hc.Do(req, resp)
attempts++
if attempts > 3 {
return fmt.Errorf("the server closed 3 subsequent connections: %s", err)
}
goto again
}