Skip to content

Commit 45bb06c

Browse files
committed
cluster: don't reload slots if address already changed.
1 parent 2507be6 commit 45bb06c

File tree

2 files changed

+11
-13
lines changed

2 files changed

+11
-13
lines changed

cluster.go

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,14 @@ func (c *ClusterClient) slotAddrs(slot int) []string {
9797
return addrs
9898
}
9999

100+
func (c *ClusterClient) slotMasterAddr(slot int) string {
101+
addrs := c.slotAddrs(slot)
102+
if len(addrs) > 0 {
103+
return addrs[0]
104+
}
105+
return ""
106+
}
107+
100108
// randomClient returns a Client for the first pingable node.
101109
func (c *ClusterClient) randomClient() (client *Client, err error) {
102110
for i := 0; i < 10; i++ {
@@ -118,11 +126,7 @@ func (c *ClusterClient) process(cmd Cmder) {
118126

119127
slot := hashSlot(cmd.clusterKey())
120128

121-
var addr string
122-
if addrs := c.slotAddrs(slot); len(addrs) > 0 {
123-
addr = addrs[0] // First address is master.
124-
}
125-
129+
addr := c.slotMasterAddr(slot)
126130
client, err := c.getClient(addr)
127131
if err != nil {
128132
cmd.setErr(err)
@@ -160,7 +164,7 @@ func (c *ClusterClient) process(cmd Cmder) {
160164
var addr string
161165
moved, ask, addr = isMovedError(err)
162166
if moved || ask {
163-
if moved {
167+
if moved && c.slotMasterAddr(slot) != addr {
164168
c.lazyReloadSlots()
165169
}
166170
client, err = c.getClient(addr)

cluster_pipeline.go

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -53,13 +53,7 @@ func (c *ClusterPipeline) Exec() (cmds []Cmder, retErr error) {
5353
cmdsMap := make(map[string][]Cmder)
5454
for _, cmd := range cmds {
5555
slot := hashSlot(cmd.clusterKey())
56-
addrs := c.cluster.slotAddrs(slot)
57-
58-
var addr string
59-
if len(addrs) > 0 {
60-
addr = addrs[0] // First address is master.
61-
}
62-
56+
addr := c.cluster.slotMasterAddr(slot)
6357
cmdsMap[addr] = append(cmdsMap[addr], cmd)
6458
}
6559

0 commit comments

Comments
 (0)