diff options
author | serg-belyakov <serg-belyakov@yandex-team.com> | 2022-10-24 09:58:36 +0300 |
---|---|---|
committer | serg-belyakov <serg-belyakov@yandex-team.com> | 2022-10-24 09:58:36 +0300 |
commit | 534bec06db9563742c1e284358b134adfd965f51 (patch) | |
tree | 2b4e19f0f30e4cb5b97102fd6e39157f307488e2 | |
parent | dd79472cbdb87cf2e28d1d2b9d83886286898b8d (diff) | |
download | ydb-534bec06db9563742c1e284358b134adfd965f51.tar.gz |
Add OnQuarantine flag to TOwnerData,
Add OnQuarantine flag to TOwnerData
-rw-r--r-- | ydb/core/blobstorage/pdisk/blobstorage_pdisk_impl.cpp | 6 | ||||
-rw-r--r-- | ydb/core/blobstorage/pdisk/blobstorage_pdisk_state.h | 7 |
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 { |