aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorserg-belyakov <serg-belyakov@yandex-team.com>2022-10-24 09:58:36 +0300
committerserg-belyakov <serg-belyakov@yandex-team.com>2022-10-24 09:58:36 +0300
commit534bec06db9563742c1e284358b134adfd965f51 (patch)
tree2b4e19f0f30e4cb5b97102fd6e39157f307488e2
parentdd79472cbdb87cf2e28d1d2b9d83886286898b8d (diff)
downloadydb-534bec06db9563742c1e284358b134adfd965f51.tar.gz
Add OnQuarantine flag to TOwnerData,
Add OnQuarantine flag to TOwnerData
-rw-r--r--ydb/core/blobstorage/pdisk/blobstorage_pdisk_impl.cpp6
-rw-r--r--ydb/core/blobstorage/pdisk/blobstorage_pdisk_state.h7
2 files changed, 10 insertions, 3 deletions
diff --git a/ydb/core/blobstorage/pdisk/blobstorage_pdisk_impl.cpp b/ydb/core/blobstorage/pdisk/blobstorage_pdisk_impl.cpp
index 609edbf2927..3732fb14797 100644
--- a/ydb/core/blobstorage/pdisk/blobstorage_pdisk_impl.cpp
+++ b/ydb/core/blobstorage/pdisk/blobstorage_pdisk_impl.cpp
@@ -1699,7 +1699,7 @@ TOwner TPDisk::FindNextOwnerId() {
if (LastOwnerId == start) {
return 0;
}
- } while (OwnerData[LastOwnerId].VDiskId != TVDiskID::InvalidId);
+ } while (OwnerData[LastOwnerId].VDiskId != TVDiskID::InvalidId || OwnerData[LastOwnerId].OnQuarantine);
*Mon.LastOwnerId = LastOwnerId;
return LastOwnerId;
@@ -1830,7 +1830,7 @@ void TPDisk::YardInitFinish(TYardInit &evYardInit) {
// TODO(cthulhu): don't allocate more owners than expected
Keeper.AddOwner(owner, vDiskId);
- OwnerData[owner] = TOwnerData{};
+ OwnerData[owner].Reset(false);
// A new owner is created.
@@ -2058,7 +2058,7 @@ void TPDisk::KillOwner(TOwner owner, TOwnerRound killOwnerRound, TCompletionEven
AtomicDecrement(TotalOwners);
TOwnerRound ownerRound = OwnerData[owner].OwnerRound;
- OwnerData[owner] = TOwnerData{};
+ OwnerData[owner].Reset(pushedOwnerIntoQuarantine);
OwnerData[owner].OwnerRound = ownerRound;
VDiskOwners.erase(vDiskId);
diff --git a/ydb/core/blobstorage/pdisk/blobstorage_pdisk_state.h b/ydb/core/blobstorage/pdisk/blobstorage_pdisk_state.h
index 032a69f767f..66d6c384360 100644
--- a/ydb/core/blobstorage/pdisk/blobstorage_pdisk_state.h
+++ b/ydb/core/blobstorage/pdisk/blobstorage_pdisk_state.h
@@ -78,6 +78,8 @@ struct TOwnerData {
TIntrusivePtr<TLogReaderBase> LogReader;
TIntrusivePtr<TOwnerInflight> InFlight;
+ bool OnQuarantine = false;
+
TOwnerData()
: InFlight(new TOwnerInflight)
{}
@@ -139,6 +141,11 @@ struct TOwnerData {
bool HaveRequestsInFlight() const {
return LogReader || InFlight->ChunkWrites || InFlight->ChunkReads || InFlight->LogWrites;
}
+
+ void Reset(bool quarantine = false) {
+ *this = TOwnerData{};
+ OnQuarantine = quarantine;
+ }
};
struct TChunkState {