Skip to content

Commit

Permalink
Merge pull request redis#948 from go-redis/fix/reload-more-often
Browse files Browse the repository at this point in the history
Reload cluster state almost on any error
  • Loading branch information
vmihailenco authored Jan 8, 2019
2 parents 22be8a3 + 2e5bd7a commit d9c8076
Showing 1 changed file with 22 additions and 22 deletions.
44 changes: 22 additions & 22 deletions cluster.go
Original file line number Diff line number Diff line change
Expand Up @@ -844,15 +844,12 @@ func (c *ClusterClient) Watch(fn func(*Tx) error, keys ...string) error {
if err == nil {
break
}

if internal.IsRetryableError(err, true) {
if err != Nil {
c.state.LazyReload()
continue
}

moved, ask, addr := internal.IsMovedError(err)
if moved || ask {
c.state.LazyReload()
node, err = c.nodes.GetOrCreate(addr)
if err != nil {
return err
Expand All @@ -868,6 +865,10 @@ func (c *ClusterClient) Watch(fn func(*Tx) error, keys ...string) error {
continue
}

if internal.IsRetryableError(err, true) {
continue
}

return err
}

Expand Down Expand Up @@ -932,6 +933,9 @@ func (c *ClusterClient) defaultProcess(cmd Cmder) error {
if err == nil {
break
}
if err != Nil {
c.state.LazyReload()
}

// If slave is loading - pick another node.
if c.opt.ReadOnly && internal.IsLoadingError(err) {
Expand All @@ -940,28 +944,10 @@ func (c *ClusterClient) defaultProcess(cmd Cmder) error {
continue
}

if internal.IsRetryableError(err, true) {
c.state.LazyReload()

// First retry the same node.
if attempt == 0 {
continue
}

// Second try random node.
node, err = c.nodes.Random()
if err != nil {
break
}
continue
}

var moved bool
var addr string
moved, ask, addr = internal.IsMovedError(err)
if moved || ask {
c.state.LazyReload()

node, err = c.nodes.GetOrCreate(addr)
if err != nil {
break
Expand All @@ -974,6 +960,20 @@ func (c *ClusterClient) defaultProcess(cmd Cmder) error {
continue
}

if internal.IsRetryableError(err, true) {
// First retry the same node.
if attempt == 0 {
continue
}

// Second try random node.
node, err = c.nodes.Random()
if err != nil {
break
}
continue
}

break
}

Expand Down

0 comments on commit d9c8076

Please sign in to comment.