rpcclient: save the last error when retrying

This commit is contained in:
Andras Banki-Horvath 2022-05-12 22:09:38 +02:00
parent 9babf1fa08
commit 97313ac873
No known key found for this signature in database
GPG key ID: 80E5375C094198D8

View file

@ -771,7 +771,7 @@ func (c *Client) handleSendPostMessage(jReq *jsonRequest,
url := protocol + "://" + c.config.Host
var (
err error
err, lastErr error
backoff time.Duration
httpResponse *http.Response
)
@ -807,6 +807,12 @@ func (c *Client) handleSendPostMessage(jReq *jsonRequest,
break
}
// Save the last error for the case where we backoff further,
// retry and get an invalid response but no error. If this
// happens the saved last error will be used to enrich the error
// message that we pass back to the caller.
lastErr = err
// Backoff sleep otherwise.
backoff = requestRetryInterval * time.Duration(i+1)
if backoff > time.Minute {
@ -833,7 +839,8 @@ func (c *Client) handleSendPostMessage(jReq *jsonRequest,
if httpResponse == nil {
jReq.responseChan <- &Response{
err: fmt.Errorf("invalid http POST response (nil), "+
"method: %s, id: %d", jReq.method, jReq.id),
"method: %s, id: %d, last error=%v",
jReq.method, jReq.id, lastErr),
}
}