@@ -114,7 +114,7 @@ void TTenantDataErasureManager::Run(NIceDb::TNiceDb& db) {
114114 Status = EDataErasureStatus::IN_PROGRESS;
115115 for (const auto & [shardIdx, shardInfo] : SchemeShard->ShardInfos ) {
116116 if (shardInfo.TabletType == ETabletType::DataShard) {
117- Enqueue (shardIdx); // forward generation
117+ Enqueue (shardIdx);
118118 WaitingDataErasureShards[shardIdx] = EDataErasureStatus::IN_PROGRESS;
119119 db.Table <Schema::WaitingDataErasureShards>().Key (shardIdx.GetOwnerId (), shardIdx.GetLocalId ()).Update <Schema::WaitingDataErasureShards::Status>(WaitingDataErasureShards[shardIdx]);
120120 }
@@ -291,21 +291,15 @@ void TTenantDataErasureManager::OnDone(const TTabletId& tabletId, NIceDb::TNiceD
291291 {
292292 auto it = WaitingDataErasureShards.find (shardIdx);
293293 if (it != WaitingDataErasureShards.end ()) {
294- it->second = EDataErasureStatus::COMPLETED;
294+ db.Table <Schema::WaitingDataErasureShards>().Key (shardIdx.GetOwnerId (), shardIdx.GetLocalId ()).Delete ();
295+ WaitingDataErasureShards.erase (it);
295296 }
296- db.Table <Schema::WaitingDataErasureShards>().Key (shardIdx.GetOwnerId (), shardIdx.GetLocalId ()).Update <Schema::WaitingDataErasureShards::Status>(it->second );
297297 }
298298
299299 SchemeShard->TabletCounters ->Cumulative ()[COUNTER_TENANT_DATA_ERASURE_OK].Increment (1 );
300300 UpdateMetrics ();
301301
302- bool isTenantDataErasureCompleted = true ;
303- for (const auto & [shardIdx, status] : WaitingDataErasureShards) {
304- if (status == EDataErasureStatus::IN_PROGRESS) {
305- isTenantDataErasureCompleted = false ;
306- }
307- }
308- if (isTenantDataErasureCompleted) {
302+ if (WaitingDataErasureShards.empty ()) {
309303 LOG_INFO_S (ctx, NKikimrServices::FLAT_TX_SCHEMESHARD,
310304 " [TenantDataErasureManager] Data erasure in shards is completed. Send response to root schemeshard" );
311305 Complete ();
@@ -399,14 +393,8 @@ bool TTenantDataErasureManager::Remove(const TShardIdx& shardIdx) {
399393 if (it != WaitingDataErasureShards.end ()) {
400394 Queue->Remove (shardIdx);
401395 ActivePipes.erase (shardIdx);
402- it->second = EDataErasureStatus::COMPLETED;
403- bool isTenantDataErasureCompleted = true ;
404- for (const auto & [shardIdx, status] : WaitingDataErasureShards) {
405- if (status == EDataErasureStatus::IN_PROGRESS) {
406- isTenantDataErasureCompleted = false ;
407- }
408- }
409- if (isTenantDataErasureCompleted) {
396+ WaitingDataErasureShards.erase (it);
397+ if (WaitingDataErasureShards.empty ()) {
410398 auto ctx = SchemeShard->ActorContext ();
411399 LOG_INFO_S (ctx, NKikimrServices::FLAT_TX_SCHEMESHARD,
412400 " [TenantDataErasureManager] [Remove] Data erasure in shards is completed. Send response to root schemeshard" );
@@ -620,7 +608,7 @@ struct TSchemeShard::TTxCancelDataErasureShards : public TSchemeShard::TRwTxBase
620608 NIceDb::TNiceDb db (txc.DB );
621609 for (const auto & shard : DataErasureShards) {
622610 if (Self->DataErasureManager ->Remove (shard)) {
623- db.Table <Schema::WaitingDataErasureShards>().Key (shard.GetOwnerId (), shard.GetLocalId ()).Update <Schema::WaitingDataErasureShards::Status>(EDataErasureStatus::COMPLETED );
611+ db.Table <Schema::WaitingDataErasureShards>().Key (shard.GetOwnerId (), shard.GetLocalId ()).Delete ( );
624612 }
625613 }
626614 if (Self->DataErasureManager ->GetStatus () == EDataErasureStatus::COMPLETED) {
0 commit comments