Added configuration to fail on a non-temporary error. This is reverting to the original behavior of the retry mechanism. However, this allows the user to opt to fail in a non-temporary error.

This commit is contained in:
Renan DelValle 2019-06-07 19:18:34 -07:00
parent 11db9daa3b
commit a00eb4ff39
No known key found for this signature in database
GPG key ID: C240AD6D6F443EC9
5 changed files with 137 additions and 91 deletions

View file

@ -173,10 +173,11 @@ func (r *realisClient) thriftCallWithRetries(
e, ok := e.Err().(*url.Error)
if ok {
// EOF error occurs when the server closes the read buffer of the client. This is common
// when the server is overloaded and should be retried. All other errors that are permanent
// will not be retried.
if e.Err != io.EOF && !e.Temporary() {
if e.Err != io.EOF && !e.Temporary() && r.RealisConfig().failOnPermanentErrors {
return nil, errors.Wrap(clientErr, "permanent connection error")
}