diff --git a/ydb/core/blobstorage/nodewarden/node_warden_impl.cpp b/ydb/core/blobstorage/nodewarden/node_warden_impl.cpp index d05bb4c35174..3020e58dfe5f 100644 --- a/ydb/core/blobstorage/nodewarden/node_warden_impl.cpp +++ b/ydb/core/blobstorage/nodewarden/node_warden_impl.cpp @@ -335,7 +335,7 @@ void TNodeWarden::Handle(NPDisk::TEvSlayResult::TPtr ev) { } else { SendVDiskReport(vslotId, msg.VDiskId, NKikimrBlobStorage::TEvControllerNodeReport::WIPED); TVDiskRecord& vdisk = vdiskIt->second; - StartLocalVDiskActor(vdisk, TDuration::Zero()); // restart actor after successful wiping + StartLocalVDiskActor(vdisk); // restart actor after successful wiping SendDiskMetrics(false); } break; diff --git a/ydb/core/blobstorage/nodewarden/node_warden_impl.h b/ydb/core/blobstorage/nodewarden/node_warden_impl.h index 18f904006b50..2f2fba15af32 100644 --- a/ydb/core/blobstorage/nodewarden/node_warden_impl.h +++ b/ydb/core/blobstorage/nodewarden/node_warden_impl.h @@ -337,7 +337,6 @@ namespace NKikimr::NStorage { std::optional RuntimeData; bool ShutdownPending = false; bool RestartAfterShutdown = false; - TDuration YardInitDelay; // Last VDiskId reported to Node Whiteboard. std::optional WhiteboardVDiskId; @@ -396,7 +395,7 @@ namespace NKikimr::NStorage { void DestroyLocalVDisk(TVDiskRecord& vdisk); void PoisonLocalVDisk(TVDiskRecord& vdisk); - void StartLocalVDiskActor(TVDiskRecord& vdisk, TDuration yardInitDelay); + void StartLocalVDiskActor(TVDiskRecord& vdisk); void HandleGone(STATEFN_SIG); void ApplyServiceSetVDisks(const NKikimrBlobStorage::TNodeWardenServiceSet& serviceSet); diff --git a/ydb/core/blobstorage/nodewarden/node_warden_pdisk.cpp b/ydb/core/blobstorage/nodewarden/node_warden_pdisk.cpp index 4448895bfae1..94f36f1474a1 100644 --- a/ydb/core/blobstorage/nodewarden/node_warden_pdisk.cpp +++ b/ydb/core/blobstorage/nodewarden/node_warden_pdisk.cpp @@ -251,7 +251,7 @@ namespace NKikimr::NStorage { key.PDiskId, key.VDiskSlotId)); it->second = round; } else { - StartLocalVDiskActor(value, TDuration::Zero()); + StartLocalVDiskActor(value); } } SendDiskMetrics(false); @@ -263,7 +263,7 @@ namespace NKikimr::NStorage { for (auto it = LocalVDisks.lower_bound(from); it != LocalVDisks.end() && it->first <= to; ++it) { auto& [key, value] = *it; if (!value.RuntimeData && !SlayInFlight.contains(key)) { - StartLocalVDiskActor(value, TDuration::Zero()); + StartLocalVDiskActor(value); } } } diff --git a/ydb/core/blobstorage/nodewarden/node_warden_vdisk.cpp b/ydb/core/blobstorage/nodewarden/node_warden_vdisk.cpp index 13552c050d14..4eb9662b024f 100644 --- a/ydb/core/blobstorage/nodewarden/node_warden_vdisk.cpp +++ b/ydb/core/blobstorage/nodewarden/node_warden_vdisk.cpp @@ -53,7 +53,7 @@ namespace NKikimr::NStorage { SendDiskMetrics(false); } - void TNodeWarden::StartLocalVDiskActor(TVDiskRecord& vdisk, TDuration yardInitDelay) { + void TNodeWarden::StartLocalVDiskActor(TVDiskRecord& vdisk) { const TVSlotId vslotId = vdisk.GetVSlotId(); const ui64 pdiskGuid = vdisk.Config.GetVDiskLocation().GetPDiskGuid(); const bool donorMode = vdisk.Config.HasDonorMode(); @@ -73,7 +73,6 @@ namespace NKikimr::NStorage { if (vdisk.ShutdownPending) { vdisk.RestartAfterShutdown = true; - vdisk.YardInitDelay = Max(vdisk.YardInitDelay, yardInitDelay); return; } @@ -175,7 +174,7 @@ namespace NKikimr::NStorage { baseInfo.ReplPDiskWriteQuoter = pdiskIt->second.ReplPDiskWriteQuoter; baseInfo.ReplNodeRequestQuoter = ReplNodeRequestQuoter; baseInfo.ReplNodeResponseQuoter = ReplNodeResponseQuoter; - baseInfo.YardInitDelay = yardInitDelay; + baseInfo.YardInitDelay = VDiskCooldownTimeout; TIntrusivePtr vdiskConfig = Cfg->AllVDiskKinds->MakeVDiskConfig(baseInfo); vdiskConfig->EnableVDiskCooldownTimeout = Cfg->EnableVDiskCooldownTimeout; @@ -248,10 +247,8 @@ namespace NKikimr::NStorage { TVDiskRecord& vdisk = jt->second; Y_ABORT_UNLESS(vdisk.ShutdownPending); vdisk.ShutdownPending = false; - if (vdisk.RestartAfterShutdown) { - StartLocalVDiskActor(vdisk, vdisk.YardInitDelay); - vdisk.RestartAfterShutdown = false; - vdisk.YardInitDelay = TDuration::Zero(); + if (std::exchange(vdisk.RestartAfterShutdown, false)) { + StartLocalVDiskActor(vdisk); } } VDiskIdByActor.erase(it); @@ -315,10 +312,10 @@ namespace NKikimr::NStorage { } else if (vdisk.GetDoWipe()) { Slay(record); } else if (!record.RuntimeData) { - StartLocalVDiskActor(record, TDuration::Zero()); + StartLocalVDiskActor(record); } else if (record.RuntimeData->DonorMode < record.Config.HasDonorMode() || record.RuntimeData->ReadOnly != record.Config.GetReadOnly()) { PoisonLocalVDisk(record); - StartLocalVDiskActor(record, VDiskCooldownTimeout); + StartLocalVDiskActor(record); } } @@ -345,7 +342,7 @@ namespace NKikimr::NStorage { auto& record = it->second; if (record.GetVDiskId() == vDiskId) { PoisonLocalVDisk(record); - StartLocalVDiskActor(record, VDiskCooldownTimeout); + StartLocalVDiskActor(record); break; } } diff --git a/ydb/core/blobstorage/vdisk/anubis_osiris/blobstorage_osiris.cpp b/ydb/core/blobstorage/vdisk/anubis_osiris/blobstorage_osiris.cpp index a441e5664d0b..7a769aaf33aa 100644 --- a/ydb/core/blobstorage/vdisk/anubis_osiris/blobstorage_osiris.cpp +++ b/ydb/core/blobstorage/vdisk/anubis_osiris/blobstorage_osiris.cpp @@ -20,10 +20,8 @@ namespace NKikimr { BarriersEssence = BarriersSnap.CreateEssence(HullCtx); } - bool Check(const TKeyLogoBlob &key, - const TMemRecLogoBlob &memRec, - bool allowKeepFlags) const { - return BarriersEssence->Keep(key, memRec, {}, allowKeepFlags, false /*allowGarbageCollection*/).KeepData; + bool Check(const TKeyLogoBlob &key, const TMemRecLogoBlob &memRec, bool allowKeepFlags) const { + return BarriersEssence->Keep(key, memRec, {}, allowKeepFlags, true).KeepData; } TIntrusivePtr HullCtx;