Merge pull request #573 from go-redis/fix/no-error-on-empty-pipeline

Don't return an error when pipeline is empty
This commit is contained in:
Vladimir Mihailenco 2017-05-30 15:53:33 +03:00 committed by GitHub
commit 663bb76bcc
4 changed files with 9 additions and 8 deletions

View File

@ -1,7 +1,6 @@
package redis
import (
"errors"
"sync"
"github.com/go-redis/redis/internal/pool"
@ -80,7 +79,7 @@ func (c *Pipeline) Exec() ([]Cmder, error) {
}
if len(c.cmds) == 0 {
return nil, errors.New("redis: pipeline is empty")
return nil, nil
}
cmds := c.cmds

View File

@ -34,16 +34,17 @@ var _ = Describe("pipelining", func() {
})
assertPipeline := func() {
It("returns an error when there are no commands", func() {
It("returns no errors when there are no commands", func() {
_, err := pipe.Exec()
Expect(err).To(MatchError("redis: pipeline is empty"))
Expect(err).NotTo(HaveOccurred())
})
It("discards queued commands", func() {
pipe.Get("key")
pipe.Discard()
_, err := pipe.Exec()
Expect(err).To(MatchError("redis: pipeline is empty"))
cmds, err := pipe.Exec()
Expect(err).NotTo(HaveOccurred())
Expect(cmds).To(BeNil())
})
It("handles val/err", func() {

View File

@ -344,6 +344,7 @@ var _ = Describe("Client OnConnect", func() {
BeforeEach(func() {
opt := redisOptions()
opt.DB = 0
opt.OnConnect = func(cn *redis.Conn) error {
return cn.ClientSetName("on_connect").Err()
}

View File

@ -86,12 +86,12 @@ var _ = Describe("Tx", func() {
Expect(get.Val()).To(Equal("hello2"))
})
It("returns an error when there are no commands", func() {
It("returns no error when there are no commands", func() {
err := client.Watch(func(tx *redis.Tx) error {
_, err := tx.Pipelined(func(redis.Pipeliner) error { return nil })
return err
})
Expect(err).To(MatchError("redis: pipeline is empty"))
Expect(err).NotTo(HaveOccurred())
v, err := client.Ping().Result()
Expect(err).NotTo(HaveOccurred())