1
0
mirror of https://github.com/redis/go-redis.git synced 2025-07-28 06:42:00 +03:00

Added backoff retry

This commit is contained in:
Jonathan Chan
2017-05-25 01:08:44 -04:00
committed by Vladimir Mihailenco
parent 368f0ea0ba
commit 406e882c43
7 changed files with 110 additions and 8 deletions

View File

@ -96,9 +96,16 @@ func (c *baseClient) WrapProcess(fn func(oldProcess func(cmd Cmder) error) func(
func (c *baseClient) defaultProcess(cmd Cmder) error {
for i := 0; i <= c.opt.MaxRetries; i++ {
if i > 0 {
time.Sleep(internal.RetryBackoff(i, c.opt.MaxRetryBackoff))
}
cn, _, err := c.conn()
if err != nil {
cmd.setErr(err)
if internal.IsRetryableError(err) {
continue
}
return err
}
@ -106,7 +113,7 @@ func (c *baseClient) defaultProcess(cmd Cmder) error {
if err := writeCmd(cn, cmd); err != nil {
c.putConn(cn, err)
cmd.setErr(err)
if err != nil && internal.IsRetryableError(err) {
if internal.IsRetryableError(err) {
continue
}
return err