diff --git a/Makefile b/Makefile index fa3b4e0..0323b37 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,7 @@ all: testdeps go test ./... go test ./... -short -race + go test ./... -run=NONE -bench=. env GOOS=linux GOARCH=386 go test ./... go vet go get github.com/gordonklaus/ineffassign diff --git a/cluster.go b/cluster.go index ab2c76f..68194c8 100644 --- a/cluster.go +++ b/cluster.go @@ -1265,7 +1265,7 @@ func (c *ClusterClient) mapCmdsByNode(cmds []Cmder, cmdsMap *cmdsMap) error { return err } - cmdsAreReadOnly := c.cmdsAreReadOnly(cmds) + cmdsAreReadOnly := c.opt.ReadOnly && c.cmdsAreReadOnly(cmds) for _, cmd := range cmds { var node *clusterNode var err error @@ -1309,10 +1309,9 @@ func (c *ClusterClient) pipelineProcessCmds( return err } - err = cn.WithReader(c.opt.ReadTimeout, func(rd *proto.Reader) error { + return cn.WithReader(c.opt.ReadTimeout, func(rd *proto.Reader) error { return c.pipelineReadCmds(node, rd, cmds, failedCmds) }) - return err } func (c *ClusterClient) pipelineReadCmds( @@ -1329,7 +1328,9 @@ func (c *ClusterClient) pipelineReadCmds( continue } - if internal.IsRedisError(err) { + if c.opt.ReadOnly && internal.IsLoadingError(err) { + node.MarkAsLoading() + } else if internal.IsRedisError(err) { continue } diff --git a/go.mod b/go.mod index 57f2bc0..eb4969d 100644 --- a/go.mod +++ b/go.mod @@ -4,3 +4,5 @@ require ( github.com/onsi/ginkgo v1.8.0 github.com/onsi/gomega v1.5.0 ) + +go 1.13