Merge pull request #1034 from go-redis/fix/pipeline-make-node-as-loading

Mark node as loading in Cluster pipeline read
This commit is contained in:
Vladimir Mihailenco 2019-05-30 17:39:20 +03:00 committed by GitHub
commit 458982a440
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 8 additions and 4 deletions

View File

@ -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

View File

@ -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
}

2
go.mod
View File

@ -4,3 +4,5 @@ require (
github.com/onsi/ginkgo v1.8.0
github.com/onsi/gomega v1.5.0
)
go 1.13