diff --git a/cluster.go b/cluster.go index e3a6591e..c9f1384b 100644 --- a/cluster.go +++ b/cluster.go @@ -1537,10 +1537,13 @@ func (c *ClusterClient) pubSub() *PubSub { panic("node != nil") } - slot := hashtag.Slot(channels[0]) - var err error - node, err = c.slotMasterNode(slot) + if len(channels) > 0 { + slot := hashtag.Slot(channels[0]) + node, err = c.slotMasterNode(slot) + } else { + node, err = c.nodes.Random() + } if err != nil { return nil, err } diff --git a/cluster_test.go b/cluster_test.go index 51633e91..f128a8a8 100644 --- a/cluster_test.go +++ b/cluster_test.go @@ -512,6 +512,14 @@ var _ = Describe("ClusterClient", func() { return nil }, 30*time.Second).ShouldNot(HaveOccurred()) }) + + It("supports PubSub.Ping without channels", func() { + pubsub := client.Subscribe() + defer pubsub.Close() + + err := pubsub.Ping() + Expect(err).NotTo(HaveOccurred()) + }) } Describe("ClusterClient", func() {