From 8028541d48e9a35b0c4fc09886f2e741fc7c3ae6 Mon Sep 17 00:00:00 2001 From: vporyadke Date: Fri, 7 Nov 2025 12:06:40 +0100 Subject: [PATCH 1/2] make storage balancer async and turned on (#28244) Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- ydb/core/mind/hive/hive_ut.cpp | 7 +++++++ ydb/core/mind/hive/storage_balancer.cpp | 1 + ydb/core/protos/config.proto | 6 +++--- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/ydb/core/mind/hive/hive_ut.cpp b/ydb/core/mind/hive/hive_ut.cpp index ef5a45498f05..84b6487d4b21 100644 --- a/ydb/core/mind/hive/hive_ut.cpp +++ b/ydb/core/mind/hive/hive_ut.cpp @@ -3392,6 +3392,8 @@ Y_UNIT_TEST_SUITE(THiveTest) { const ui64 testerTablet = MakeTabletID(false, 1); CreateTestBootstrapper(runtime, CreateTestTabletInfo(hiveTablet, TTabletTypes::Hive), &CreateDefaultHive); + auto syncReassign = runtime.AddObserver([] (auto&& ev) { ev->Get()->Record.SetAsync(false); }); + TTabletTypes::EType tabletType = TTabletTypes::Dummy; TVector tablets; for (ui64 i = 0; i < NUM_TABLETS; ++i) { @@ -9075,6 +9077,11 @@ Y_UNIT_TEST_SUITE(TStorageBalanceTest) { OnBootTablet(info); return TTestActorRuntime::EEventAction::PROCESS; } + case TEvHive::EvReassignTablet: { + auto& record = ev->Get()->Record; + record.SetAsync(false); + return TTestActorRuntime::EEventAction::PROCESS; + } } return TTestActorRuntime::EEventAction::PROCESS; }; diff --git a/ydb/core/mind/hive/storage_balancer.cpp b/ydb/core/mind/hive/storage_balancer.cpp index 0687c7cad1a2..db9a75be88f3 100644 --- a/ydb/core/mind/hive/storage_balancer.cpp +++ b/ydb/core/mind/hive/storage_balancer.cpp @@ -177,6 +177,7 @@ class THiveStorageBalancer : public NActors::TActorBootstrapped(channel.TabletId); ev->Record.SetReassignReason(NKikimrHive::TEvReassignTablet::HIVE_REASSIGN_REASON_BALANCE); + ev->Record.SetAsync(true); } ev->Record.AddChannels(channel.ChannelId); } diff --git a/ydb/core/protos/config.proto b/ydb/core/protos/config.proto index 13434c39d062..22c9c4b940e2 100644 --- a/ydb/core/protos/config.proto +++ b/ydb/core/protos/config.proto @@ -2057,10 +2057,10 @@ message THiveConfig { reserved 66; optional double ObjectImbalanceToBalance = 67 [default = 0.02]; optional EHiveChannelBalanceStrategy ChannelBalanceStrategy = 68 [default = HIVE_CHANNEL_BALANCE_STRATEGY_WEIGHTED_RANDOM]; - optional uint64 MaxChannelHistorySize = 69 [default = 200]; + optional uint64 MaxChannelHistorySize = 69 [default = 10]; optional uint64 StorageInfoRefreshFrequency = 70 [default = 600000]; // send a query to BSC every x milliseconds - optional double MinStorageScatterToBalance = 71 [default = 999]; // storage balancer trigger is disabled by default - optional double MinGroupUsageToBalance = 72 [default = 0.1]; + optional double MinStorageScatterToBalance = 71 [default = 0.5]; // storage balancer trigger threshold (enabled by default) + optional double MinGroupUsageToBalance = 72 [default = 0.05]; optional uint64 StorageBalancerInflight = 73 [default = 1]; optional bool EnableDestroyOperations = 74 [default = false]; optional double NodeUsageRangeToKick = 75 [default = 0.2]; From b1d98768e49a2e866e0b91479b0da810a160053a Mon Sep 17 00:00:00 2001 From: Alexander Zalyalov Date: Wed, 19 Nov 2025 23:06:54 +0000 Subject: [PATCH 2/2] restore --- ydb/core/protos/config.proto | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ydb/core/protos/config.proto b/ydb/core/protos/config.proto index 22c9c4b940e2..13434c39d062 100644 --- a/ydb/core/protos/config.proto +++ b/ydb/core/protos/config.proto @@ -2057,10 +2057,10 @@ message THiveConfig { reserved 66; optional double ObjectImbalanceToBalance = 67 [default = 0.02]; optional EHiveChannelBalanceStrategy ChannelBalanceStrategy = 68 [default = HIVE_CHANNEL_BALANCE_STRATEGY_WEIGHTED_RANDOM]; - optional uint64 MaxChannelHistorySize = 69 [default = 10]; + optional uint64 MaxChannelHistorySize = 69 [default = 200]; optional uint64 StorageInfoRefreshFrequency = 70 [default = 600000]; // send a query to BSC every x milliseconds - optional double MinStorageScatterToBalance = 71 [default = 0.5]; // storage balancer trigger threshold (enabled by default) - optional double MinGroupUsageToBalance = 72 [default = 0.05]; + optional double MinStorageScatterToBalance = 71 [default = 999]; // storage balancer trigger is disabled by default + optional double MinGroupUsageToBalance = 72 [default = 0.1]; optional uint64 StorageBalancerInflight = 73 [default = 1]; optional bool EnableDestroyOperations = 74 [default = false]; optional double NodeUsageRangeToKick = 75 [default = 0.2];