@@ -253,25 +253,30 @@ class THiveBalancer : public NActors::TActorBootstrapped<THiveBalancer>, public
253253 BLOG_TRACE (" Balancer on node " << node->Id << " : " << tablets.size () << " /" << nodeTablets.size () << " tablets are suitable for balancing" );
254254 if (!tablets.empty ()) {
255255 // avoid moving system tablets if possible
256- auto systemIt = std::partition (tablets.begin (), tablets.end (), [](TTabletInfo* tablet) {
257- return !THive::IsSystemTablet (tablet->GetTabletType ());
258- });
256+ std::vector<TTabletInfo*>::iterator partitionIt;
257+ if (Hive->GetLessSystemTabletsMoves ()) {
258+ partitionIt = std::partition (tablets.begin (), tablets.end (), [](TTabletInfo* tablet) {
259+ return !THive::IsSystemTablet (tablet->GetTabletType ());
260+ });
261+ } else {
262+ partitionIt = tablets.end ();
263+ }
259264 switch (Hive->GetTabletBalanceStrategy ()) {
260265 case NKikimrConfig::THiveConfig::HIVE_TABLET_BALANCE_STRATEGY_OLD_WEIGHTED_RANDOM:
261- BalanceTablets<NKikimrConfig::THiveConfig::HIVE_TABLET_BALANCE_STRATEGY_OLD_WEIGHTED_RANDOM>(tablets.begin (), systemIt , Settings.ResourceToBalance );
262- BalanceTablets<NKikimrConfig::THiveConfig::HIVE_TABLET_BALANCE_STRATEGY_OLD_WEIGHTED_RANDOM>(systemIt , tablets.end (), Settings.ResourceToBalance );
266+ BalanceTablets<NKikimrConfig::THiveConfig::HIVE_TABLET_BALANCE_STRATEGY_OLD_WEIGHTED_RANDOM>(tablets.begin (), partitionIt , Settings.ResourceToBalance );
267+ BalanceTablets<NKikimrConfig::THiveConfig::HIVE_TABLET_BALANCE_STRATEGY_OLD_WEIGHTED_RANDOM>(partitionIt , tablets.end (), Settings.ResourceToBalance );
263268 break ;
264269 case NKikimrConfig::THiveConfig::HIVE_TABLET_BALANCE_STRATEGY_WEIGHTED_RANDOM:
265- BalanceTablets<NKikimrConfig::THiveConfig::HIVE_TABLET_BALANCE_STRATEGY_WEIGHTED_RANDOM>(tablets.begin (), systemIt , Settings.ResourceToBalance );
266- BalanceTablets<NKikimrConfig::THiveConfig::HIVE_TABLET_BALANCE_STRATEGY_WEIGHTED_RANDOM>(systemIt , tablets.end (), Settings.ResourceToBalance );
270+ BalanceTablets<NKikimrConfig::THiveConfig::HIVE_TABLET_BALANCE_STRATEGY_WEIGHTED_RANDOM>(tablets.begin (), partitionIt , Settings.ResourceToBalance );
271+ BalanceTablets<NKikimrConfig::THiveConfig::HIVE_TABLET_BALANCE_STRATEGY_WEIGHTED_RANDOM>(partitionIt , tablets.end (), Settings.ResourceToBalance );
267272 break ;
268273 case NKikimrConfig::THiveConfig::HIVE_TABLET_BALANCE_STRATEGY_HEAVIEST:
269- BalanceTablets<NKikimrConfig::THiveConfig::HIVE_TABLET_BALANCE_STRATEGY_HEAVIEST>(tablets.begin (), systemIt , Settings.ResourceToBalance );
270- BalanceTablets<NKikimrConfig::THiveConfig::HIVE_TABLET_BALANCE_STRATEGY_HEAVIEST>(systemIt , tablets.end (), Settings.ResourceToBalance );
274+ BalanceTablets<NKikimrConfig::THiveConfig::HIVE_TABLET_BALANCE_STRATEGY_HEAVIEST>(tablets.begin (), partitionIt , Settings.ResourceToBalance );
275+ BalanceTablets<NKikimrConfig::THiveConfig::HIVE_TABLET_BALANCE_STRATEGY_HEAVIEST>(partitionIt , tablets.end (), Settings.ResourceToBalance );
271276 break ;
272277 case NKikimrConfig::THiveConfig::HIVE_TABLET_BALANCE_STRATEGY_RANDOM:
273- BalanceTablets<NKikimrConfig::THiveConfig::HIVE_TABLET_BALANCE_STRATEGY_RANDOM>(tablets.begin (), systemIt , Settings.ResourceToBalance );
274- BalanceTablets<NKikimrConfig::THiveConfig::HIVE_TABLET_BALANCE_STRATEGY_RANDOM>(systemIt , tablets.end (), Settings.ResourceToBalance );
278+ BalanceTablets<NKikimrConfig::THiveConfig::HIVE_TABLET_BALANCE_STRATEGY_RANDOM>(tablets.begin (), partitionIt , Settings.ResourceToBalance );
279+ BalanceTablets<NKikimrConfig::THiveConfig::HIVE_TABLET_BALANCE_STRATEGY_RANDOM>(partitionIt , tablets.end (), Settings.ResourceToBalance );
275280 break ;
276281 }
277282 Tablets.clear ();
0 commit comments