aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexander Rutkovsky <alexvru@ydb.tech>2025-03-06 17:02:41 +0300
committerGitHub <noreply@github.com>2025-03-06 17:02:41 +0300
commitee5ceb47587bacc9f95e2c603624cd3947b71f12 (patch)
treeb3247e913a79112155c0bcf65e2f492a167f8f45
parent1e9aba9b683a297b5e5f0cc2284cbe44a5591f3b (diff)
downloadydb-ee5ceb47587bacc9f95e2c603624cd3947b71f12.tar.gz
Fix VDisk premature donor drop (#15400)
-rw-r--r--ydb/core/blobstorage/vdisk/repl/blobstorage_repl.cpp6
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();