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

View File

@ -34,16 +34,17 @@ var _ = Describe("pipelining", func() {
}) })
assertPipeline := 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() _, err := pipe.Exec()
Expect(err).To(MatchError("redis: pipeline is empty")) Expect(err).NotTo(HaveOccurred())
}) })
It("discards queued commands", func() { It("discards queued commands", func() {
pipe.Get("key") pipe.Get("key")
pipe.Discard() pipe.Discard()
_, err := pipe.Exec() cmds, err := pipe.Exec()
Expect(err).To(MatchError("redis: pipeline is empty")) Expect(err).NotTo(HaveOccurred())
Expect(cmds).To(BeNil())
}) })
It("handles val/err", func() { It("handles val/err", func() {

View File

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

View File

@ -86,12 +86,12 @@ var _ = Describe("Tx", func() {
Expect(get.Val()).To(Equal("hello2")) 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 := client.Watch(func(tx *redis.Tx) error {
_, err := tx.Pipelined(func(redis.Pipeliner) error { return nil }) _, err := tx.Pipelined(func(redis.Pipeliner) error { return nil })
return err return err
}) })
Expect(err).To(MatchError("redis: pipeline is empty")) Expect(err).NotTo(HaveOccurred())
v, err := client.Ping().Result() v, err := client.Ping().Result()
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())