diff --git a/cloud/filestore/libs/storage/tablet/tablet_actor_addblob.cpp b/cloud/filestore/libs/storage/tablet/tablet_actor_addblob.cpp index 180d4c8c60..0f73ce7ad5 100644 --- a/cloud/filestore/libs/storage/tablet/tablet_actor_addblob.cpp +++ b/cloud/filestore/libs/storage/tablet/tablet_actor_addblob.cpp @@ -315,6 +315,8 @@ class TAddBlobsExecutor TABLET_VERIFY(!args.MergedBlobs); TABLET_VERIFY(!args.UnalignedDataParts); + THashSet rangeIds; + for (const auto& blob: args.SrcBlobs) { const auto rangeId = Tablet.GetMixedRangeIndex(blob.Blocks); auto& stats = AccessCompactionStats(rangeId); @@ -324,6 +326,8 @@ class TAddBlobsExecutor // needed. stats.BlobsCount = Max(1U, stats.BlobsCount) - 1; Tablet.DeleteMixedBlocks(db, blob.BlobId, blob.Blocks); + + rangeIds.insert(rangeId); } THashMap rangeId2AddedBlobsCount; @@ -334,6 +338,8 @@ class TAddBlobsExecutor if (Tablet.WriteMixedBlocks(db, blob.BlobId, blob.Blocks)) { ++rangeId2AddedBlobsCount[rangeId]; } + + rangeIds.insert(rangeId); } for (const auto& [rangeId, addedBlobsCount]: rangeId2AddedBlobsCount) { @@ -350,9 +356,7 @@ class TAddBlobsExecutor } // recalculating GarbageBlocksCount for each of the affected ranges - for (const auto& blob: args.SrcBlobs) { - const auto rangeId = Tablet.GetMixedRangeIndex(blob.Blocks); - + for (const auto rangeId: rangeIds) { AccessCompactionStats(rangeId).GarbageBlocksCount = Tablet.CalculateMixedIndexRangeGarbageBlockCount(rangeId); }