forked from mirror/redis
Merge pull request #134 from go-redis/fix/ring-pipeline-error
ring: return an error in pipeline when all shards are down.
This commit is contained in:
commit
7261646454
3
ring.go
3
ring.go
|
@ -298,6 +298,9 @@ func (pipe *RingPipeline) Exec() (cmds []Cmder, retErr error) {
|
|||
name := pipe.ring.hash.Get(hashKey(cmd.clusterKey()))
|
||||
if name == "" {
|
||||
cmd.setErr(errRingShardsDown)
|
||||
if retErr == nil {
|
||||
retErr = errRingShardsDown
|
||||
}
|
||||
continue
|
||||
}
|
||||
cmdsMap[name] = append(cmdsMap[name], cmd)
|
||||
|
|
|
@ -94,6 +94,15 @@ var _ = Describe("Redis ring", func() {
|
|||
})
|
||||
|
||||
Describe("pipelining", func() {
|
||||
It("returns an error when all shards are down", func() {
|
||||
ring := redis.NewRing(&redis.RingOptions{})
|
||||
_, err := ring.Pipelined(func(pipe *redis.RingPipeline) error {
|
||||
pipe.Ping()
|
||||
return nil
|
||||
})
|
||||
Expect(err).To(MatchError("redis: all ring shards are down"))
|
||||
})
|
||||
|
||||
It("uses both shards", func() {
|
||||
pipe := ring.Pipeline()
|
||||
for i := 0; i < 100; i++ {
|
||||
|
|
Loading…
Reference in New Issue