Fix GetReplicas() returns all nodes in ShardReplicas (#16597)

Signed-off-by: yah01 <yang.cen@zilliz.com>
pull/16614/head
yah01 2022-04-24 11:35:45 +08:00 committed by GitHub
parent 242f08fb67
commit b82f6a1a0a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 28 additions and 8 deletions

View File

@ -1072,8 +1072,11 @@ func (qc *QueryCoord) GetReplicas(ctx context.Context, req *milvuspb.GetReplicas
for _, replica := range replicas {
for _, shard := range replica.ShardReplicas {
for nodeID := range shardNodes[shard.DmChannelName] {
shard.NodeIds = append(shard.NodeIds, nodeID)
nodes := shardNodes[shard.DmChannelName]
for _, nodeID := range replica.NodeIds {
if _, ok := nodes[nodeID]; ok {
shard.NodeIds = append(shard.NodeIds, nodeID)
}
}
}
}

View File

@ -1494,6 +1494,7 @@ func TestGetReplicas(t *testing.T) {
assert.NoError(t, err)
assert.Equal(t, commonpb.ErrorCode_Success, status.ErrorCode)
waitLoadCollectionDone(ctx, queryCoord, defaultCollectionID)
time.Sleep(200 * time.Millisecond)
getReplicasReq := &milvuspb.GetReplicasRequest{
Base: &commonpb.MsgBase{},
@ -1517,17 +1518,33 @@ func TestGetReplicas(t *testing.T) {
assert.NoError(t, err)
assert.Equal(t, commonpb.ErrorCode_Success, resp.Status.ErrorCode)
assert.Equal(t, 3, len(resp.Replicas))
for i := range resp.Replicas {
assert.Equal(t, 1, len(resp.Replicas[i].NodeIds))
for j := range resp.Replicas[i].ShardReplicas {
sawNodes := make(map[UniqueID]struct{})
for i, replica := range resp.Replicas {
addNodes := make(map[UniqueID]struct{})
assert.Equal(t, 1, len(replica.NodeIds))
assert.Greater(t, len(replica.NodeIds), 0)
assert.Greater(t, len(replica.ShardReplicas), 0)
for _, shard := range replica.ShardReplicas {
assert.Equal(t,
resp.Replicas[i].NodeIds[0],
resp.Replicas[i].ShardReplicas[j].LeaderID)
replica.NodeIds[0],
shard.LeaderID)
assert.Greater(t, len(shard.NodeIds), 0)
for _, nodeID := range shard.NodeIds {
_, ok := sawNodes[nodeID]
assert.False(t, ok)
addNodes[nodeID] = struct{}{}
}
}
for nodeID := range addNodes {
sawNodes[nodeID] = struct{}{}
}
for j := 0; j < i; j++ {
assert.NotEqual(t,
resp.Replicas[i].NodeIds[0],
replica.NodeIds[0],
resp.Replicas[j].NodeIds[0])
}
}