@@ -114,7 +114,7 @@ void TTenantDataErasureManager::Run(NIceDb::TNiceDb& db) {
114
114
Status = EDataErasureStatus::IN_PROGRESS;
115
115
for (const auto & [shardIdx, shardInfo] : SchemeShard->ShardInfos ) {
116
116
if (shardInfo.TabletType == ETabletType::DataShard) {
117
- Enqueue (shardIdx); // forward generation
117
+ Enqueue (shardIdx);
118
118
WaitingDataErasureShards[shardIdx] = EDataErasureStatus::IN_PROGRESS;
119
119
db.Table <Schema::WaitingDataErasureShards>().Key (shardIdx.GetOwnerId (), shardIdx.GetLocalId ()).Update <Schema::WaitingDataErasureShards::Status>(WaitingDataErasureShards[shardIdx]);
120
120
}
@@ -291,21 +291,15 @@ void TTenantDataErasureManager::OnDone(const TTabletId& tabletId, NIceDb::TNiceD
291
291
{
292
292
auto it = WaitingDataErasureShards.find (shardIdx);
293
293
if (it != WaitingDataErasureShards.end ()) {
294
- it->second = EDataErasureStatus::COMPLETED;
294
+ db.Table <Schema::WaitingDataErasureShards>().Key (shardIdx.GetOwnerId (), shardIdx.GetLocalId ()).Delete ();
295
+ WaitingDataErasureShards.erase (it);
295
296
}
296
- db.Table <Schema::WaitingDataErasureShards>().Key (shardIdx.GetOwnerId (), shardIdx.GetLocalId ()).Update <Schema::WaitingDataErasureShards::Status>(it->second );
297
297
}
298
298
299
299
SchemeShard->TabletCounters ->Cumulative ()[COUNTER_TENANT_DATA_ERASURE_OK].Increment (1 );
300
300
UpdateMetrics ();
301
301
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 ()) {
309
303
LOG_INFO_S (ctx, NKikimrServices::FLAT_TX_SCHEMESHARD,
310
304
" [TenantDataErasureManager] Data erasure in shards is completed. Send response to root schemeshard" );
311
305
Complete ();
@@ -399,14 +393,8 @@ bool TTenantDataErasureManager::Remove(const TShardIdx& shardIdx) {
399
393
if (it != WaitingDataErasureShards.end ()) {
400
394
Queue->Remove (shardIdx);
401
395
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 ()) {
410
398
auto ctx = SchemeShard->ActorContext ();
411
399
LOG_INFO_S (ctx, NKikimrServices::FLAT_TX_SCHEMESHARD,
412
400
" [TenantDataErasureManager] [Remove] Data erasure in shards is completed. Send response to root schemeshard" );
@@ -620,7 +608,7 @@ struct TSchemeShard::TTxCancelDataErasureShards : public TSchemeShard::TRwTxBase
620
608
NIceDb::TNiceDb db (txc.DB );
621
609
for (const auto & shard : DataErasureShards) {
622
610
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 ( );
624
612
}
625
613
}
626
614
if (Self->DataErasureManager ->GetStatus () == EDataErasureStatus::COMPLETED) {
0 commit comments