diff --git a/internal/querycoordv2/balance/multi_target_balance.go b/internal/querycoordv2/balance/multi_target_balance.go index e3ae7725d8..356fca53df 100644 --- a/internal/querycoordv2/balance/multi_target_balance.go +++ b/internal/querycoordv2/balance/multi_target_balance.go @@ -559,7 +559,11 @@ func (b *MultiTargetBalancer) genSegmentPlan(ctx context.Context, replica *meta. globalNodeSegments[node] = b.dist.SegmentDistManager.GetByFilter(meta.WithNodeID(node)) } - return b.genPlanByDistributions(nodeSegments, globalNodeSegments) + plans := b.genPlanByDistributions(nodeSegments, globalNodeSegments) + for i := range plans { + plans[i].Replica = replica + } + return plans } func (b *MultiTargetBalancer) genPlanByDistributions(nodeSegments, globalNodeSegments map[int64][]*meta.Segment) []SegmentAssignPlan { diff --git a/tests/integration/balance/balance_test.go b/tests/integration/balance/balance_test.go index 53f41c619f..a2a1d17a5b 100644 --- a/tests/integration/balance/balance_test.go +++ b/tests/integration/balance/balance_test.go @@ -170,6 +170,10 @@ func (s *BalanceTestSuit) initCollection(collectionName string, replica int, cha } func (s *BalanceTestSuit) TestBalanceOnSingleReplica() { + testBalanceOnSingleReplica(s) +} + +func testBalanceOnSingleReplica(s *BalanceTestSuit) { name := "test_balance_" + funcutil.GenRandomStr() s.initCollection(name, 1, 2, 2, 2000, 500) @@ -414,6 +418,16 @@ func (s *BalanceTestSuit) TestConcurrentBalanceChannelAndSegment() { s.Equal(int64(0), failCounter.Load()) } +func (s *BalanceTestSuit) TestMultiTargetBalancePolicy() { + // Set balance policy to MultipleTargetBalancer + revertGuard := s.Cluster.MustModifyMilvusConfig(map[string]string{ + paramtable.Get().QueryCoordCfg.Balancer.Key: "MultipleTargetBalancer", + }) + defer revertGuard() + + testBalanceOnSingleReplica(s) +} + func TestBalance(t *testing.T) { suite.Run(t, new(BalanceTestSuit)) }