Skip to content

Commit 90e01ab

Browse files
committed
test: cluster nodes with unknown ip
1 parent dba06d2 commit 90e01ab

File tree

2 files changed

+22
-9
lines changed

2 files changed

+22
-9
lines changed

cluster.go

+8-9
Original file line numberDiff line numberDiff line change
@@ -85,15 +85,17 @@ func (c *clusterClient) refresh() (err error) {
8585
return c.sc.Do(c._refresh)
8686
}
8787

88+
type clusterslots struct {
89+
reply RedisResult
90+
addr string
91+
}
92+
8893
func (c *clusterClient) _refresh() (err error) {
8994
var reply RedisMessage
9095
var addr string
9196

9297
c.mu.RLock()
93-
results := make(chan struct {
94-
reply RedisResult
95-
conn conn
96-
}, len(c.conns))
98+
results := make(chan clusterslots, len(c.conns))
9799
pending := make([]conn, 0, len(c.conns))
98100
for _, cc := range c.conns {
99101
pending = append(pending, cc)
@@ -104,15 +106,12 @@ func (c *clusterClient) _refresh() (err error) {
104106
if i&3 == 0 { // batch CLUSTER SLOTS for every 4 connections
105107
for j := i; j < i+4 && j < len(pending); j++ {
106108
go func(c conn) {
107-
results <- struct {
108-
reply RedisResult
109-
conn conn
110-
}{c.Do(context.Background(), cmds.SlotCmd), c}
109+
results <- clusterslots{reply: c.Do(context.Background(), cmds.SlotCmd), addr: c.Addr()}
111110
}(pending[j])
112111
}
113112
}
114113
r := <-results
115-
addr = r.conn.Addr()
114+
addr = r.addr
116115
reply, err = r.reply.ToMessage()
117116
if len(reply.values) != 0 {
118117
break

cluster_test.go

+14
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,20 @@ var singleSlotWithoutIP = newResult(RedisMessage{typ: '*', values: []RedisMessag
6464
{typ: ':', integer: 4},
6565
{typ: '+', string: ""},
6666
}},
67+
{typ: '*', values: []RedisMessage{ // replica
68+
{typ: '+', string: "?"},
69+
{typ: ':', integer: 1},
70+
{typ: '+', string: ""},
71+
}},
72+
}},
73+
{typ: '*', values: []RedisMessage{
74+
{typ: ':', integer: 0},
75+
{typ: ':', integer: 0},
76+
{typ: '*', values: []RedisMessage{ // master
77+
{typ: '+', string: "?"},
78+
{typ: ':', integer: 4},
79+
{typ: '+', string: ""},
80+
}},
6781
}},
6882
}}, nil)
6983

0 commit comments

Comments
 (0)