Skip to content

Commit e91be31

Browse files
committed
enhance: Optimize shard serviceable mechanism
- Merge leader view and channel management into ChannelDistManager, allowing a channel to have multiple delegators. - Improve shard leader switching to ensure a single replica only has one shard leader per channel. The shard leader handles all resource loading and query requests. - Refine the serviceable mechanism: after QC completes loading, sync the query view to the delegator. The delegator then determines its serviceable status based on the query view. - When a delegator encounters forwarding query or deletion failures, mark the corresponding segment as offline and transition it to an unserviceable state. Signed-off-by: Wei Liu <[email protected]>
1 parent f094d02 commit e91be31

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

54 files changed

+4689
-3332
lines changed

internal/querycoordv2/balance/channel_level_score_balancer_test.go

Lines changed: 27 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -291,11 +291,18 @@ func (suite *ChannelLevelScoreBalancerTestSuite) TestAssignSegmentWithGrowing()
291291
defer paramtable.Get().Reset(paramtable.Get().QueryCoordCfg.DelegatorMemoryOverloadFactor.Key)
292292

293293
// mock 50 growing row count in node 1, which is delegator, expect all segment assign to node 2
294-
leaderView := &meta.LeaderView{
295-
ID: 1,
296-
CollectionID: 1,
297-
}
298-
suite.balancer.dist.LeaderViewManager.Update(1, leaderView)
294+
suite.balancer.dist.ChannelDistManager.Update(1, &meta.DmChannel{
295+
VchannelInfo: &datapb.VchannelInfo{
296+
CollectionID: 1,
297+
ChannelName: "v1",
298+
},
299+
Node: 1,
300+
View: &meta.LeaderView{
301+
ID: 1,
302+
CollectionID: 1,
303+
NumOfGrowingRows: 50,
304+
},
305+
})
299306
plans := balancer.AssignSegment(ctx, 1, toAssign, lo.Keys(distributions), false)
300307
for _, p := range plans {
301308
suite.Equal(int64(2), p.To)
@@ -752,12 +759,12 @@ func (suite *ChannelLevelScoreBalancerTestSuite) TestMultiReplicaBalance() {
752759
},
753760
channelDist: map[int64][]*meta.DmChannel{
754761
1: {
755-
{VchannelInfo: &datapb.VchannelInfo{CollectionID: 1, ChannelName: "channel1"}, Node: 1},
756-
{VchannelInfo: &datapb.VchannelInfo{CollectionID: 1, ChannelName: "channel2"}, Node: 1},
762+
{VchannelInfo: &datapb.VchannelInfo{CollectionID: 1, ChannelName: "channel1"}, Node: 1, View: &meta.LeaderView{ID: 1, CollectionID: 1}},
763+
{VchannelInfo: &datapb.VchannelInfo{CollectionID: 1, ChannelName: "channel2"}, Node: 1, View: &meta.LeaderView{ID: 2, CollectionID: 1}},
757764
},
758765
3: {
759-
{VchannelInfo: &datapb.VchannelInfo{CollectionID: 1, ChannelName: "channel3"}, Node: 3},
760-
{VchannelInfo: &datapb.VchannelInfo{CollectionID: 1, ChannelName: "channel4"}, Node: 3},
766+
{VchannelInfo: &datapb.VchannelInfo{CollectionID: 1, ChannelName: "channel3"}, Node: 3, View: &meta.LeaderView{ID: 3, CollectionID: 1}},
767+
{VchannelInfo: &datapb.VchannelInfo{CollectionID: 1, ChannelName: "channel4"}, Node: 3, View: &meta.LeaderView{ID: 4, CollectionID: 1}},
761768
},
762769
},
763770
expectPlans: []SegmentAssignPlan{},
@@ -815,10 +822,10 @@ func (suite *ChannelLevelScoreBalancerTestSuite) TestMultiReplicaBalance() {
815822
suite.Len(channelPlans, 2)
816823

817824
// mock new distribution after channel balance
818-
balancer.dist.ChannelDistManager.Update(1, &meta.DmChannel{VchannelInfo: &datapb.VchannelInfo{CollectionID: 1, ChannelName: "channel1"}, Node: 1})
819-
balancer.dist.ChannelDistManager.Update(2, &meta.DmChannel{VchannelInfo: &datapb.VchannelInfo{CollectionID: 1, ChannelName: "channel2"}, Node: 2})
820-
balancer.dist.ChannelDistManager.Update(3, &meta.DmChannel{VchannelInfo: &datapb.VchannelInfo{CollectionID: 1, ChannelName: "channel3"}, Node: 3})
821-
balancer.dist.ChannelDistManager.Update(4, &meta.DmChannel{VchannelInfo: &datapb.VchannelInfo{CollectionID: 1, ChannelName: "channel4"}, Node: 4})
825+
balancer.dist.ChannelDistManager.Update(1, &meta.DmChannel{VchannelInfo: &datapb.VchannelInfo{CollectionID: 1, ChannelName: "channel1"}, Node: 1, View: &meta.LeaderView{ID: 1, CollectionID: 1}})
826+
balancer.dist.ChannelDistManager.Update(2, &meta.DmChannel{VchannelInfo: &datapb.VchannelInfo{CollectionID: 1, ChannelName: "channel2"}, Node: 2, View: &meta.LeaderView{ID: 2, CollectionID: 1}})
827+
balancer.dist.ChannelDistManager.Update(3, &meta.DmChannel{VchannelInfo: &datapb.VchannelInfo{CollectionID: 1, ChannelName: "channel3"}, Node: 3, View: &meta.LeaderView{ID: 3, CollectionID: 1}})
828+
balancer.dist.ChannelDistManager.Update(4, &meta.DmChannel{VchannelInfo: &datapb.VchannelInfo{CollectionID: 1, ChannelName: "channel4"}, Node: 4, View: &meta.LeaderView{ID: 4, CollectionID: 1}})
822829

823830
// expected to balance segment
824831
segmentPlans, channelPlans = suite.getCollectionBalancePlans(balancer, c.collectionID)
@@ -909,6 +916,7 @@ func (suite *ChannelLevelScoreBalancerTestSuite) TestExclusiveChannelBalance_Cha
909916
ChannelName: "channel2",
910917
},
911918
Node: ch1Nodes[0],
919+
View: &meta.LeaderView{ID: 2, CollectionID: collectionID},
912920
},
913921
}...)
914922

@@ -984,6 +992,7 @@ func (suite *ChannelLevelScoreBalancerTestSuite) TestExclusiveChannelBalance_Seg
984992
ChannelName: "channel1",
985993
},
986994
Node: ch1Nodes[0],
995+
View: &meta.LeaderView{ID: ch1Nodes[0], CollectionID: collectionID},
987996
},
988997
}...)
989998

@@ -994,6 +1003,7 @@ func (suite *ChannelLevelScoreBalancerTestSuite) TestExclusiveChannelBalance_Seg
9941003
ChannelName: "channel2",
9951004
},
9961005
Node: ch2Nodes[0],
1006+
View: &meta.LeaderView{ID: ch2Nodes[0], CollectionID: collectionID},
9971007
},
9981008
}...)
9991009

@@ -1082,6 +1092,7 @@ func (suite *ChannelLevelScoreBalancerTestSuite) TestExclusiveChannelBalance_Nod
10821092
ChannelName: "channel1",
10831093
},
10841094
Node: ch1Nodes[0],
1095+
View: &meta.LeaderView{ID: ch1Nodes[0], CollectionID: collectionID},
10851096
},
10861097
}...)
10871098

@@ -1092,6 +1103,7 @@ func (suite *ChannelLevelScoreBalancerTestSuite) TestExclusiveChannelBalance_Nod
10921103
ChannelName: "channel2",
10931104
},
10941105
Node: ch2Nodes[0],
1106+
View: &meta.LeaderView{ID: ch2Nodes[0], CollectionID: collectionID},
10951107
},
10961108
}...)
10971109

@@ -1207,6 +1219,7 @@ func (suite *ChannelLevelScoreBalancerTestSuite) TestExclusiveChannelBalance_Seg
12071219
ChannelName: "channel1",
12081220
},
12091221
Node: ch1Nodes[0],
1222+
View: &meta.LeaderView{ID: ch1Nodes[0], CollectionID: collectionID},
12101223
},
12111224
}...)
12121225

@@ -1217,6 +1230,7 @@ func (suite *ChannelLevelScoreBalancerTestSuite) TestExclusiveChannelBalance_Seg
12171230
ChannelName: "channel2",
12181231
},
12191232
Node: ch2Nodes[0],
1233+
View: &meta.LeaderView{ID: ch2Nodes[0], CollectionID: collectionID},
12201234
},
12211235
}...)
12221236

internal/querycoordv2/balance/report.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ func (br *balanceReport) SetMemoryFactor(node int64, memoryFactor float64) {
5555
}
5656
}
5757

58-
func (br *balanceReport) SetDeletagorScore(node int64, delegatorScore float64) {
58+
func (br *balanceReport) SetDelegatorScore(node int64, delegatorScore float64) {
5959
nodeItem, ok := br.nodeItems[node]
6060
if ok {
6161
nodeItem.delegatorScore = delegatorScore

internal/querycoordv2/balance/rowcount_based_balancer.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -150,9 +150,9 @@ func (b *RowCountBasedBalancer) convertToNodeItemsBySegment(nodeIDs []int64) []*
150150
}
151151

152152
// calculate growing segment row count on node
153-
views := b.dist.LeaderViewManager.GetByFilter(meta.WithNodeID2LeaderView(node))
154-
for _, view := range views {
155-
rowcnt += int(view.NumOfGrowingRows)
153+
channels := b.dist.ChannelDistManager.GetByFilter(meta.WithNodeID2Channel(node))
154+
for _, channel := range channels {
155+
rowcnt += int(channel.View.NumOfGrowingRows)
156156
}
157157

158158
// calculate executing task cost in scheduler

internal/querycoordv2/balance/rowcount_based_balancer_test.go

Lines changed: 64 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -250,10 +250,10 @@ func (suite *RowCountBasedBalancerTestSuite) TestBalance() {
250250
},
251251
distributionChannels: map[int64][]*meta.DmChannel{
252252
2: {
253-
{VchannelInfo: &datapb.VchannelInfo{CollectionID: 1, ChannelName: "v2"}, Node: 2},
253+
{VchannelInfo: &datapb.VchannelInfo{CollectionID: 1, ChannelName: "v2"}, Node: 2, View: &meta.LeaderView{ID: 2, CollectionID: 1}},
254254
},
255255
3: {
256-
{VchannelInfo: &datapb.VchannelInfo{CollectionID: 1, ChannelName: "v3"}, Node: 3},
256+
{VchannelInfo: &datapb.VchannelInfo{CollectionID: 1, ChannelName: "v3"}, Node: 3, View: &meta.LeaderView{ID: 3, CollectionID: 1}},
257257
},
258258
},
259259
expectPlans: []SegmentAssignPlan{},
@@ -280,10 +280,10 @@ func (suite *RowCountBasedBalancerTestSuite) TestBalance() {
280280
},
281281
distributionChannels: map[int64][]*meta.DmChannel{
282282
2: {
283-
{VchannelInfo: &datapb.VchannelInfo{CollectionID: 1, ChannelName: "v2"}, Node: 2},
283+
{VchannelInfo: &datapb.VchannelInfo{CollectionID: 1, ChannelName: "v2"}, Node: 2, View: &meta.LeaderView{ID: 2, CollectionID: 1}},
284284
},
285285
1: {
286-
{VchannelInfo: &datapb.VchannelInfo{CollectionID: 1, ChannelName: "v3"}, Node: 1},
286+
{VchannelInfo: &datapb.VchannelInfo{CollectionID: 1, ChannelName: "v3"}, Node: 1, View: &meta.LeaderView{ID: 3, CollectionID: 1}},
287287
},
288288
},
289289
expectPlans: []SegmentAssignPlan{
@@ -301,8 +301,8 @@ func (suite *RowCountBasedBalancerTestSuite) TestBalance() {
301301
distributions: map[int64][]*meta.Segment{},
302302
distributionChannels: map[int64][]*meta.DmChannel{
303303
2: {
304-
{VchannelInfo: &datapb.VchannelInfo{CollectionID: 1, ChannelName: "v2"}, Node: 2},
305-
{VchannelInfo: &datapb.VchannelInfo{CollectionID: 1, ChannelName: "v3"}, Node: 2},
304+
{VchannelInfo: &datapb.VchannelInfo{CollectionID: 1, ChannelName: "v2"}, Node: 2, View: &meta.LeaderView{ID: 2, CollectionID: 1}},
305+
{VchannelInfo: &datapb.VchannelInfo{CollectionID: 1, ChannelName: "v3"}, Node: 2, View: &meta.LeaderView{ID: 3, CollectionID: 1}},
306306
},
307307
3: {},
308308
},
@@ -320,14 +320,14 @@ func (suite *RowCountBasedBalancerTestSuite) TestBalance() {
320320
distributions: map[int64][]*meta.Segment{},
321321
distributionChannels: map[int64][]*meta.DmChannel{
322322
1: {
323-
{VchannelInfo: &datapb.VchannelInfo{CollectionID: 1, ChannelName: "v1"}, Node: 1},
324-
{VchannelInfo: &datapb.VchannelInfo{CollectionID: 1, ChannelName: "v2"}, Node: 1},
323+
{VchannelInfo: &datapb.VchannelInfo{CollectionID: 1, ChannelName: "v1"}, Node: 1, View: &meta.LeaderView{ID: 1, CollectionID: 1, Channel: "v1", Status: &querypb.LeaderViewStatus{Serviceable: true}}},
324+
{VchannelInfo: &datapb.VchannelInfo{CollectionID: 1, ChannelName: "v2"}, Node: 1, View: &meta.LeaderView{ID: 2, CollectionID: 1, Channel: "v2", Status: &querypb.LeaderViewStatus{Serviceable: true}}},
325325
},
326326
2: {
327-
{VchannelInfo: &datapb.VchannelInfo{CollectionID: 1, ChannelName: "v3"}, Node: 2},
327+
{VchannelInfo: &datapb.VchannelInfo{CollectionID: 1, ChannelName: "v3"}, Node: 2, View: &meta.LeaderView{ID: 3, CollectionID: 1}},
328328
},
329329
3: {
330-
{VchannelInfo: &datapb.VchannelInfo{CollectionID: 1, ChannelName: "v4"}, Node: 3},
330+
{VchannelInfo: &datapb.VchannelInfo{CollectionID: 1, ChannelName: "v4"}, Node: 3, View: &meta.LeaderView{ID: 4, CollectionID: 1}},
331331
},
332332
},
333333
expectPlans: []SegmentAssignPlan{},
@@ -342,8 +342,8 @@ func (suite *RowCountBasedBalancerTestSuite) TestBalance() {
342342
distributions: map[int64][]*meta.Segment{},
343343
distributionChannels: map[int64][]*meta.DmChannel{
344344
1: {
345-
{VchannelInfo: &datapb.VchannelInfo{CollectionID: 1, ChannelName: "v1"}, Node: 1},
346-
{VchannelInfo: &datapb.VchannelInfo{CollectionID: 1, ChannelName: "v2"}, Node: 1},
345+
{VchannelInfo: &datapb.VchannelInfo{CollectionID: 1, ChannelName: "v1"}, Node: 1, View: &meta.LeaderView{ID: 1, CollectionID: 1, Channel: "v1", Status: &querypb.LeaderViewStatus{Serviceable: true}}},
346+
{VchannelInfo: &datapb.VchannelInfo{CollectionID: 1, ChannelName: "v2"}, Node: 1, View: &meta.LeaderView{ID: 2, CollectionID: 1, Channel: "v2", Status: &querypb.LeaderViewStatus{Serviceable: true}}},
347347
},
348348
2: {},
349349
3: {},
@@ -443,8 +443,6 @@ func (suite *RowCountBasedBalancerTestSuite) TestBalance() {
443443
assertChannelAssignPlanElementMatch(&suite.Suite, c.expectChannelPlans, channelPlans, true)
444444
}
445445

446-
// clear distribution
447-
448446
for _, node := range c.nodes {
449447
balancer.meta.ResourceManager.HandleNodeDown(ctx, node)
450448
balancer.nodeManager.Remove(node)
@@ -535,7 +533,7 @@ func (suite *RowCountBasedBalancerTestSuite) TestBalanceOnPartStopping() {
535533
},
536534
distributionChannels: map[int64][]*meta.DmChannel{
537535
2: {
538-
{VchannelInfo: &datapb.VchannelInfo{CollectionID: 1, ChannelName: "v2"}, Node: 2},
536+
{VchannelInfo: &datapb.VchannelInfo{CollectionID: 1, ChannelName: "v2"}, Node: 2, View: &meta.LeaderView{ID: 2, CollectionID: 1}},
539537
},
540538
},
541539
expectPlans: []SegmentAssignPlan{
@@ -595,10 +593,10 @@ func (suite *RowCountBasedBalancerTestSuite) TestBalanceOnPartStopping() {
595593
},
596594
distributionChannels: map[int64][]*meta.DmChannel{
597595
2: {
598-
{VchannelInfo: &datapb.VchannelInfo{CollectionID: 1, ChannelName: "v2"}, Node: 2},
596+
{VchannelInfo: &datapb.VchannelInfo{CollectionID: 1, ChannelName: "v2"}, Node: 2, View: &meta.LeaderView{ID: 2, CollectionID: 1}},
599597
},
600598
3: {
601-
{VchannelInfo: &datapb.VchannelInfo{CollectionID: 1, ChannelName: "v3"}, Node: 3},
599+
{VchannelInfo: &datapb.VchannelInfo{CollectionID: 1, ChannelName: "v3"}, Node: 3, View: &meta.LeaderView{ID: 3, CollectionID: 1}},
602600
},
603601
},
604602
expectPlans: []SegmentAssignPlan{},
@@ -688,10 +686,10 @@ func (suite *RowCountBasedBalancerTestSuite) TestBalanceOutboundNodes() {
688686
},
689687
distributionChannels: map[int64][]*meta.DmChannel{
690688
2: {
691-
{VchannelInfo: &datapb.VchannelInfo{CollectionID: 1, ChannelName: "v2"}, Node: 2},
689+
{VchannelInfo: &datapb.VchannelInfo{CollectionID: 1, ChannelName: "v2"}, Node: 2, View: &meta.LeaderView{ID: 2, CollectionID: 1}},
692690
},
693691
3: {
694-
{VchannelInfo: &datapb.VchannelInfo{CollectionID: 1, ChannelName: "v3"}, Node: 3},
692+
{VchannelInfo: &datapb.VchannelInfo{CollectionID: 1, ChannelName: "v3"}, Node: 3, View: &meta.LeaderView{ID: 3, CollectionID: 1}},
695693
},
696694
},
697695
expectPlans: []SegmentAssignPlan{},
@@ -718,10 +716,10 @@ func (suite *RowCountBasedBalancerTestSuite) TestBalanceOutboundNodes() {
718716
},
719717
distributionChannels: map[int64][]*meta.DmChannel{
720718
2: {
721-
{VchannelInfo: &datapb.VchannelInfo{CollectionID: 1, ChannelName: "v2"}, Node: 2},
719+
{VchannelInfo: &datapb.VchannelInfo{CollectionID: 1, ChannelName: "v2"}, Node: 2, View: &meta.LeaderView{ID: 2, CollectionID: 1}},
722720
},
723721
1: {
724-
{VchannelInfo: &datapb.VchannelInfo{CollectionID: 1, ChannelName: "v3"}, Node: 1},
722+
{VchannelInfo: &datapb.VchannelInfo{CollectionID: 1, ChannelName: "v3"}, Node: 1, View: &meta.LeaderView{ID: 3, CollectionID: 1}},
725723
},
726724
},
727725
expectPlans: []SegmentAssignPlan{
@@ -897,12 +895,18 @@ func (suite *RowCountBasedBalancerTestSuite) TestAssignSegmentWithGrowing() {
897895
}
898896

899897
// mock 50 growing row count in node 1, which is delegator, expect all segment assign to node 2
900-
leaderView := &meta.LeaderView{
901-
ID: 1,
902-
CollectionID: 1,
903-
NumOfGrowingRows: 50,
904-
}
905-
suite.balancer.dist.LeaderViewManager.Update(1, leaderView)
898+
suite.balancer.dist.ChannelDistManager.Update(1, &meta.DmChannel{
899+
VchannelInfo: &datapb.VchannelInfo{
900+
CollectionID: 1,
901+
ChannelName: "v1",
902+
},
903+
Node: 1,
904+
View: &meta.LeaderView{
905+
ID: 1,
906+
CollectionID: 1,
907+
NumOfGrowingRows: 50,
908+
},
909+
})
906910
plans := balancer.AssignSegment(ctx, 1, toAssign, lo.Keys(distributions), false)
907911
for _, p := range plans {
908912
suite.Equal(int64(2), p.To)
@@ -934,14 +938,18 @@ func (suite *RowCountBasedBalancerTestSuite) TestDisableBalanceChannel() {
934938
distributions: map[int64][]*meta.Segment{},
935939
distributionChannels: map[int64][]*meta.DmChannel{
936940
2: {
937-
{VchannelInfo: &datapb.VchannelInfo{CollectionID: 1, ChannelName: "v2"}, Node: 2},
938-
{VchannelInfo: &datapb.VchannelInfo{CollectionID: 1, ChannelName: "v3"}, Node: 2},
941+
{VchannelInfo: &datapb.VchannelInfo{CollectionID: 1, ChannelName: "v2"}, Node: 2, View: &meta.LeaderView{ID: 2, CollectionID: 1}},
942+
{VchannelInfo: &datapb.VchannelInfo{CollectionID: 1, ChannelName: "v3"}, Node: 2, View: &meta.LeaderView{ID: 2, CollectionID: 1}},
939943
},
940944
3: {},
941945
},
942946
expectPlans: []SegmentAssignPlan{},
943947
expectChannelPlans: []ChannelAssignPlan{
944-
{Channel: &meta.DmChannel{VchannelInfo: &datapb.VchannelInfo{CollectionID: 1, ChannelName: "v3"}, Node: 2}, From: 2, To: 3, Replica: newReplicaDefaultRG(1)},
948+
{Channel: &meta.DmChannel{
949+
VchannelInfo: &datapb.VchannelInfo{CollectionID: 1, ChannelName: "v3"},
950+
Node: 2,
951+
View: &meta.LeaderView{ID: 3, CollectionID: 1},
952+
}, From: 2, To: 3, Replica: newReplicaDefaultRG(1)},
945953
},
946954
enableBalanceChannel: true,
947955
},
@@ -955,8 +963,8 @@ func (suite *RowCountBasedBalancerTestSuite) TestDisableBalanceChannel() {
955963
distributions: map[int64][]*meta.Segment{},
956964
distributionChannels: map[int64][]*meta.DmChannel{
957965
2: {
958-
{VchannelInfo: &datapb.VchannelInfo{CollectionID: 1, ChannelName: "v2"}, Node: 2},
959-
{VchannelInfo: &datapb.VchannelInfo{CollectionID: 1, ChannelName: "v3"}, Node: 2},
966+
{VchannelInfo: &datapb.VchannelInfo{CollectionID: 1, ChannelName: "v2"}, Node: 2, View: &meta.LeaderView{ID: 2, CollectionID: 1}},
967+
{VchannelInfo: &datapb.VchannelInfo{CollectionID: 1, ChannelName: "v3"}, Node: 2, View: &meta.LeaderView{ID: 2, CollectionID: 1}},
960968
},
961969
3: {},
962970
},
@@ -1099,12 +1107,12 @@ func (suite *RowCountBasedBalancerTestSuite) TestMultiReplicaBalance() {
10991107
},
11001108
channelDist: map[int64][]*meta.DmChannel{
11011109
1: {
1102-
{VchannelInfo: &datapb.VchannelInfo{CollectionID: 1, ChannelName: "channel1"}, Node: 1},
1103-
{VchannelInfo: &datapb.VchannelInfo{CollectionID: 1, ChannelName: "channel2"}, Node: 1},
1110+
{VchannelInfo: &datapb.VchannelInfo{CollectionID: 1, ChannelName: "channel1"}, Node: 1, View: &meta.LeaderView{ID: 1, CollectionID: 1}},
1111+
{VchannelInfo: &datapb.VchannelInfo{CollectionID: 1, ChannelName: "channel2"}, Node: 1, View: &meta.LeaderView{ID: 1, CollectionID: 1}},
11041112
},
11051113
3: {
1106-
{VchannelInfo: &datapb.VchannelInfo{CollectionID: 1, ChannelName: "channel3"}, Node: 3},
1107-
{VchannelInfo: &datapb.VchannelInfo{CollectionID: 1, ChannelName: "channel4"}, Node: 3},
1114+
{VchannelInfo: &datapb.VchannelInfo{CollectionID: 1, ChannelName: "channel3"}, Node: 3, View: &meta.LeaderView{ID: 3, CollectionID: 1}},
1115+
{VchannelInfo: &datapb.VchannelInfo{CollectionID: 1, ChannelName: "channel4"}, Node: 3, View: &meta.LeaderView{ID: 3, CollectionID: 1}},
11081116
},
11091117
},
11101118
expectPlans: []SegmentAssignPlan{},
@@ -1162,10 +1170,26 @@ func (suite *RowCountBasedBalancerTestSuite) TestMultiReplicaBalance() {
11621170
suite.Len(channelPlans, 2)
11631171

11641172
// mock new distribution after channel balance
1165-
balancer.dist.ChannelDistManager.Update(1, &meta.DmChannel{VchannelInfo: &datapb.VchannelInfo{CollectionID: 1, ChannelName: "channel1"}, Node: 1})
1166-
balancer.dist.ChannelDistManager.Update(2, &meta.DmChannel{VchannelInfo: &datapb.VchannelInfo{CollectionID: 1, ChannelName: "channel2"}, Node: 2})
1167-
balancer.dist.ChannelDistManager.Update(3, &meta.DmChannel{VchannelInfo: &datapb.VchannelInfo{CollectionID: 1, ChannelName: "channel3"}, Node: 3})
1168-
balancer.dist.ChannelDistManager.Update(4, &meta.DmChannel{VchannelInfo: &datapb.VchannelInfo{CollectionID: 1, ChannelName: "channel4"}, Node: 4})
1173+
balancer.dist.ChannelDistManager.Update(1, &meta.DmChannel{
1174+
VchannelInfo: &datapb.VchannelInfo{CollectionID: 1, ChannelName: "channel1"},
1175+
Node: 1,
1176+
View: &meta.LeaderView{ID: 1, CollectionID: 1},
1177+
})
1178+
balancer.dist.ChannelDistManager.Update(2, &meta.DmChannel{
1179+
VchannelInfo: &datapb.VchannelInfo{CollectionID: 1, ChannelName: "channel2"},
1180+
Node: 2,
1181+
View: &meta.LeaderView{ID: 2, CollectionID: 1},
1182+
})
1183+
balancer.dist.ChannelDistManager.Update(3, &meta.DmChannel{
1184+
VchannelInfo: &datapb.VchannelInfo{CollectionID: 1, ChannelName: "channel3"},
1185+
Node: 3,
1186+
View: &meta.LeaderView{ID: 3, CollectionID: 1},
1187+
})
1188+
balancer.dist.ChannelDistManager.Update(4, &meta.DmChannel{
1189+
VchannelInfo: &datapb.VchannelInfo{CollectionID: 1, ChannelName: "channel4"},
1190+
Node: 4,
1191+
View: &meta.LeaderView{ID: 4, CollectionID: 1},
1192+
})
11691193

11701194
// expected to balance segment
11711195
segmentPlans, channelPlans = suite.getCollectionBalancePlans(balancer, c.collectionID)

0 commit comments

Comments
 (0)