diff --git a/ydb/core/tx/schemeshard/schemeshard__root_data_erasure_manager.cpp b/ydb/core/tx/schemeshard/schemeshard__root_data_erasure_manager.cpp index ab6ac10648d8..e70297752e62 100644 --- a/ydb/core/tx/schemeshard/schemeshard__root_data_erasure_manager.cpp +++ b/ydb/core/tx/schemeshard/schemeshard__root_data_erasure_manager.cpp @@ -24,7 +24,7 @@ TRootDataErasureManager::TRootDataErasureManager(TSchemeShard* const schemeShard , DataErasureBSCInterval(TDuration::Seconds(config.GetBlobStorageControllerRequestIntervalSeconds())) , CurrentWakeupInterval(DataErasureInterval) , BSC(MakeBSControllerID()) - , IsManualStartup(config.GetForceManualStartup()) + , IsManualStartup((DataErasureInterval.Seconds() == 0 ? true : false)) { const auto ctx = SchemeShard->ActorContext(); ctx.RegisterWithSameMailbox(Queue); @@ -46,7 +46,7 @@ void TRootDataErasureManager::UpdateConfig(const NKikimrConfig::TDataErasureConf DataErasureBSCInterval = TDuration::Seconds(config.GetBlobStorageControllerRequestIntervalSeconds()); CurrentWakeupInterval = DataErasureInterval; BSC = TTabletId(MakeBSControllerID()); - IsManualStartup = config.GetForceManualStartup(); + IsManualStartup = (DataErasureInterval.Seconds() == 0 ? true : false); const auto ctx = SchemeShard->ActorContext(); LOG_NOTICE_S(ctx, NKikimrServices::FLAT_TX_SCHEMESHARD, @@ -251,10 +251,6 @@ void TRootDataErasureManager::Enqueue(const TPathId& pathId) { } void TRootDataErasureManager::HandleDisconnect(TTabletId tabletId, const TActorId& clientId, const TActorContext& ctx) { - LOG_INFO_S(ctx, NKikimrServices::FLAT_TX_SCHEMESHARD, "[RootDataErasureManager] [Disconnect] Data erasure disconnect " - "to tablet: " << tabletId - << ", at schemeshard: " << SchemeShard->TabletID()); - if (tabletId == BSC) { LOG_DEBUG_S(ctx, NKikimrServices::FLAT_TX_SCHEMESHARD, "[RootDataErasureManager] HandleDisconnect resend request to BSC at schemeshard " << SchemeShard->TabletID()); @@ -282,6 +278,10 @@ void TRootDataErasureManager::HandleDisconnect(TTabletId tabletId, const TActorI return; } + LOG_INFO_S(ctx, NKikimrServices::FLAT_TX_SCHEMESHARD, "[RootDataErasureManager] [Disconnect] Data erasure disconnect " + "to tablet: " << tabletId + << ", at schemeshard: " << SchemeShard->TabletID()); + ActivePipes.erase(pathId); StartDataErasure(pathId); } diff --git a/ydb/core/tx/schemeshard/schemeshard__tenant_data_erasure_manager.cpp b/ydb/core/tx/schemeshard/schemeshard__tenant_data_erasure_manager.cpp index edd531c1f054..363f6f69a070 100644 --- a/ydb/core/tx/schemeshard/schemeshard__tenant_data_erasure_manager.cpp +++ b/ydb/core/tx/schemeshard/schemeshard__tenant_data_erasure_manager.cpp @@ -208,10 +208,6 @@ void TTenantDataErasureManager::Enqueue(const TShardIdx& shardIdx) { } void TTenantDataErasureManager::HandleDisconnect(TTabletId tabletId, const TActorId& clientId, const TActorContext& ctx) { - LOG_INFO_S(ctx, NKikimrServices::FLAT_TX_SCHEMESHARD, "[TenantDataErasureManager] [Disconnect] Data erasure disconnect " - "to tablet: " << tabletId - << ", at schemeshard: " << SchemeShard->TabletID()); - if (tabletId == TTabletId(SchemeShard->ParentDomainId.OwnerId)) { LOG_DEBUG_S(ctx, NKikimrServices::FLAT_TX_SCHEMESHARD, "[TenantDataErasureManager] HandleDisconnect resend response to root schemeshard at schemeshard " << SchemeShard->TabletID()); @@ -234,6 +230,10 @@ void TTenantDataErasureManager::HandleDisconnect(TTabletId tabletId, const TActo return; } + LOG_INFO_S(ctx, NKikimrServices::FLAT_TX_SCHEMESHARD, "[TenantDataErasureManager] [Disconnect] Data erasure disconnect " + "to tablet: " << tabletId + << ", at schemeshard: " << SchemeShard->TabletID()); + ActivePipes.erase(it); StartDataErasure(shardIdx); } diff --git a/ydb/core/tx/schemeshard/schemeshard_impl.cpp b/ydb/core/tx/schemeshard/schemeshard_impl.cpp index 1af50d7330ce..fe0ca059a744 100644 --- a/ydb/core/tx/schemeshard/schemeshard_impl.cpp +++ b/ydb/core/tx/schemeshard/schemeshard_impl.cpp @@ -7851,11 +7851,11 @@ TDuration TSchemeShard::SendBaseStatsToSA() { + RandomNumber(SendStatsIntervalMaxSeconds - SendStatsIntervalMinSeconds)); } -TAutoPtr TSchemeShard::CreateDataErasureManager(const NKikimrConfig::TDataErasureConfig& config) { +THolder TSchemeShard::CreateDataErasureManager(const NKikimrConfig::TDataErasureConfig& config) { if (IsDomainSchemeShard) { - return new TRootDataErasureManager(this, config); + return MakeHolder(this, config); } else { - return new TTenantDataErasureManager(this, config); + return MakeHolder(this, config); } } diff --git a/ydb/core/tx/schemeshard/schemeshard_impl.h b/ydb/core/tx/schemeshard/schemeshard_impl.h index 28820e3fb363..f4bf218201ac 100644 --- a/ydb/core/tx/schemeshard/schemeshard_impl.h +++ b/ydb/core/tx/schemeshard/schemeshard_impl.h @@ -1503,7 +1503,7 @@ class TSchemeShard void ConnectToSA(); TDuration SendBaseStatsToSA(); - TAutoPtr CreateDataErasureManager(const NKikimrConfig::TDataErasureConfig& config); + THolder CreateDataErasureManager(const NKikimrConfig::TDataErasureConfig& config); void ConfigureDataErasureManager(const NKikimrConfig::TDataErasureConfig& config); void StartStopDataErasure(); void MarkFirstRunRootDataErasureManager(); @@ -1529,7 +1529,7 @@ class TSchemeShard void SetShardsQuota(ui64 value) override; NLogin::TLoginProvider LoginProvider; - TAutoPtr DataErasureManager = nullptr; + THolder DataErasureManager = nullptr; private: void OnDetach(const TActorContext &ctx) override; diff --git a/ydb/core/tx/schemeshard/ut_data_erasure/ut_data_erasure.cpp b/ydb/core/tx/schemeshard/ut_data_erasure/ut_data_erasure.cpp index 0a6f87d978d9..aa5b9396a548 100644 --- a/ydb/core/tx/schemeshard/ut_data_erasure/ut_data_erasure.cpp +++ b/ydb/core/tx/schemeshard/ut_data_erasure/ut_data_erasure.cpp @@ -218,7 +218,7 @@ Y_UNIT_TEST_SUITE(TestDataErasure) { runtime.GetAppData().FeatureFlags.SetEnableDataErasure(true); auto& dataErasureConfig = runtime.GetAppData().DataErasureConfig; - dataErasureConfig.SetForceManualStartup(true); + dataErasureConfig.SetDataErasureIntervalSeconds(0); // do not schedule dataErasureConfig.SetBlobStorageControllerRequestIntervalSeconds(1); auto sender = runtime.AllocateEdgeActor(); @@ -262,7 +262,7 @@ Y_UNIT_TEST_SUITE(TestDataErasure) { runtime.GetAppData().FeatureFlags.SetEnableDataErasure(true); auto& dataErasureConfig = runtime.GetAppData().DataErasureConfig; - dataErasureConfig.SetForceManualStartup(true); + dataErasureConfig.SetDataErasureIntervalSeconds(0); // do not schedule dataErasureConfig.SetBlobStorageControllerRequestIntervalSeconds(1); auto sender = runtime.AllocateEdgeActor(); diff --git a/ydb/core/tx/schemeshard/ut_data_erasure_reboots/ut_data_erasure_reboots.cpp b/ydb/core/tx/schemeshard/ut_data_erasure_reboots/ut_data_erasure_reboots.cpp index e6255cd7a727..1a8072b3dae8 100644 --- a/ydb/core/tx/schemeshard/ut_data_erasure_reboots/ut_data_erasure_reboots.cpp +++ b/ydb/core/tx/schemeshard/ut_data_erasure_reboots/ut_data_erasure_reboots.cpp @@ -144,7 +144,7 @@ Y_UNIT_TEST_SUITE(DataErasureReboots) { runtime.GetAppData().FeatureFlags.SetEnableDataErasure(true); auto& dataErasureConfig = runtime.GetAppData().DataErasureConfig; - dataErasureConfig.SetForceManualStartup(true); + dataErasureConfig.SetDataErasureIntervalSeconds(0); // do not schedule dataErasureConfig.SetBlobStorageControllerRequestIntervalSeconds(1); ui64 txId = 100;