diff options
author | Alexander Rutkovsky <alexvru@ydb.tech> | 2025-03-06 17:02:41 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-03-06 17:02:41 +0300 |
commit | ee5ceb47587bacc9f95e2c603624cd3947b71f12 (patch) | |
tree | b3247e913a79112155c0bcf65e2f492a167f8f45 | |
parent | 1e9aba9b683a297b5e5f0cc2284cbe44a5591f3b (diff) | |
download | ydb-ee5ceb47587bacc9f95e2c603624cd3947b71f12.tar.gz |
Fix VDisk premature donor drop (#15400)
-rw-r--r-- | ydb/core/blobstorage/vdisk/repl/blobstorage_repl.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/ydb/core/blobstorage/vdisk/repl/blobstorage_repl.cpp b/ydb/core/blobstorage/vdisk/repl/blobstorage_repl.cpp index 76e6df65fa0..17f9f1d20a3 100644 --- a/ydb/core/blobstorage/vdisk/repl/blobstorage_repl.cpp +++ b/ydb/core/blobstorage/vdisk/repl/blobstorage_repl.cpp @@ -177,6 +177,7 @@ namespace NKikimr { bool UnrecoveredNonphantomBlobs = false; bool RequestedReplicationToken = false; bool HoldingReplicationToken = false; + bool CanDropDonor = false; TWatchdogTimer<TEvReplCheckProgress> ReplProgressWatchdog; @@ -280,6 +281,7 @@ namespace NKikimr { // switch to planning state Transition(Relaxation, Plan); + CanDropDonor = true; RunRepl(TLogoBlobID()); } @@ -375,6 +377,8 @@ namespace NKikimr { ResetReplProgressTimer(false); } + CanDropDonor = CanDropDonor && info->DropDonor; + bool finished = false; if (info->Eof) { // when it is the last quantum for some donor, rotate the blob sets @@ -399,7 +403,7 @@ namespace NKikimr { } } if (!finished) { - if (info->DropDonor) { + if (CanDropDonor) { Y_ABORT_UNLESS(!DonorQueue.empty() && DonorQueue.front()); DropDonor(*DonorQueue.front()); DonorQueue.pop_front(); |