1
0
mirror of https://github.com/redis/go-redis.git synced 2025-07-31 05:04:23 +03:00

Retry multiple commands more conservatively.

This commit is contained in:
Vladimir Mihailenco
2016-10-13 13:56:24 +03:00
parent 21cae7f9ab
commit 8558a92fa4
4 changed files with 53 additions and 43 deletions

View File

@ -649,28 +649,33 @@ func (c *ClusterClient) execClusterCmds(
if err == nil {
continue
}
if internal.IsNetworkError(err) {
if i == 0 && internal.IsNetworkError(err) {
cmd.reset()
failedCmds[nil] = append(failedCmds[nil], cmds[i:]...)
failedCmds[nil] = append(failedCmds[nil], cmds...)
break
}
moved, ask, addr := internal.IsMovedError(err)
if moved {
c.lazyReloadSlots()
cmd.reset()
node, err := c.nodeByAddr(addr)
if err != nil {
setRetErr(err)
continue
}
cmd.reset()
failedCmds[node] = append(failedCmds[node], cmd)
} else if ask {
cmd.reset()
node, err := c.nodeByAddr(addr)
if err != nil {
setRetErr(err)
continue
}
cmd.reset()
failedCmds[node] = append(failedCmds[node], NewCmd("ASKING"), cmd)
} else {
setRetErr(err)