diff options
author | senya0x5f <senya0x5f@yandex-team.com> | 2023-11-08 23:52:20 +0300 |
---|---|---|
committer | senya0x5f <senya0x5f@yandex-team.com> | 2023-11-09 00:09:39 +0300 |
commit | c6e5c42ae9a0d28e10f881f66c3de54ae039b8ce (patch) | |
tree | e52f342fa0d2c2fbefb692dc4ce11f842ffc6312 | |
parent | 8dd9800abc35191e880e21d3e9af5017032589b9 (diff) | |
download | ydb-c6e5c42ae9a0d28e10f881f66c3de54ae039b8ce.tar.gz |
Revert "KIKIMR-11137 PDisk restart button"
This reverts commit 9d82932fee76342f47bd05ea78395d59781c2b40, reversing
changes made to b6df980b3aef9c49fc9868d17eb224b2fcc75a09.
42 files changed, 118 insertions, 806 deletions
diff --git a/.mapping.json b/.mapping.json index 5fc5d1e849..fa0af57507 100644 --- a/.mapping.json +++ b/.mapping.json @@ -3466,11 +3466,6 @@ "ydb/core/blobstorage/ut_blobstorage/ut_replication/CMakeLists.linux-x86_64.txt":"", "ydb/core/blobstorage/ut_blobstorage/ut_replication/CMakeLists.txt":"", "ydb/core/blobstorage/ut_blobstorage/ut_replication/CMakeLists.windows-x86_64.txt":"", - "ydb/core/blobstorage/ut_blobstorage/ut_restart_pdisk/CMakeLists.darwin-x86_64.txt":"", - "ydb/core/blobstorage/ut_blobstorage/ut_restart_pdisk/CMakeLists.linux-aarch64.txt":"", - "ydb/core/blobstorage/ut_blobstorage/ut_restart_pdisk/CMakeLists.linux-x86_64.txt":"", - "ydb/core/blobstorage/ut_blobstorage/ut_restart_pdisk/CMakeLists.txt":"", - "ydb/core/blobstorage/ut_blobstorage/ut_restart_pdisk/CMakeLists.windows-x86_64.txt":"", "ydb/core/blobstorage/ut_blobstorage/ut_scrub/CMakeLists.darwin-x86_64.txt":"", "ydb/core/blobstorage/ut_blobstorage/ut_scrub/CMakeLists.linux-aarch64.txt":"", "ydb/core/blobstorage/ut_blobstorage/ut_scrub/CMakeLists.linux-x86_64.txt":"", diff --git a/ydb/core/base/blobstorage.h b/ydb/core/base/blobstorage.h index 8c157fdcbd..d854b71f4d 100644 --- a/ydb/core/base/blobstorage.h +++ b/ydb/core/base/blobstorage.h @@ -787,7 +787,7 @@ struct TEvBlobStorage { // EvControllerReadSchemeString = EvPut + 11 * 512, // EvControllerReadDataString, EvControllerRegisterNode = EvPut + 11 * 512 + 2, - EvControllerCreatePDisk, // Not used. + EvControllerCreatePDisk, EvControllerCreateVDiskSlots, EvControllerCreateGroup, EvControllerSelectGroups, @@ -821,7 +821,7 @@ struct TEvBlobStorage { // EvControllerReadSchemeStringResult = EvPut + 12 * 512, // EvControllerReadDataStringResult, EvControllerNodeServiceSetUpdate = EvPut + 12 * 512 + 2, - EvControllerCreatePDiskResult, // Not used. + EvControllerCreatePDiskResult, EvControllerCreateVDiskSlotsResult, EvControllerCreateGroupResult, EvControllerSelectGroupsResult, @@ -851,9 +851,9 @@ struct TEvBlobStorage { // node controller internal messages EvRegisterNodeRetry = EvPut + 14 * 512, - EvAskWardenRestartPDisk, + EvAskRestartPDisk, EvRestartPDisk, - EvNotifyWardenPDiskRestarted, + EvRestartPDiskResult, EvNodeWardenQueryGroupInfo, EvNodeWardenGroupInfo, EvNodeConfigPush, @@ -2355,10 +2355,10 @@ struct TEvBlobStorage { struct TEvDropDonor; struct TEvBunchOfEvents; + struct TEvAskRestartPDisk; struct TEvAskRestartVDisk; - struct TEvAskWardenRestartPDisk; - struct TEvAskWardenRestartPDiskResult; - struct TEvNotifyWardenPDiskRestarted; + struct TEvRestartPDisk; + struct TEvRestartPDiskResult; }; // EPutHandleClass defines BlobStorage queue to a request to diff --git a/ydb/core/blobstorage/base/blobstorage_events.h b/ydb/core/blobstorage/base/blobstorage_events.h index b8277def1c..e4a541a219 100644 --- a/ydb/core/blobstorage/base/blobstorage_events.h +++ b/ydb/core/blobstorage/base/blobstorage_events.h @@ -85,6 +85,7 @@ namespace NKikimr { } }; + struct TEvBlobStorage::TEvControllerNodeServiceSetUpdate : public TEventPB< TEvBlobStorage::TEvControllerNodeServiceSetUpdate, NKikimrBlobStorage::TEvControllerNodeServiceSetUpdate, @@ -422,10 +423,10 @@ namespace NKikimr { } }; - struct TEvBlobStorage::TEvAskWardenRestartPDisk : TEventLocal<TEvAskWardenRestartPDisk, EvAskWardenRestartPDisk> { + struct TEvBlobStorage::TEvAskRestartPDisk : TEventLocal<TEvAskRestartPDisk, EvAskRestartPDisk> { const ui32 PDiskId; - TEvAskWardenRestartPDisk(const ui32& pdiskId) + TEvAskRestartPDisk(const ui32& pdiskId) : PDiskId(pdiskId) {} }; @@ -443,28 +444,23 @@ namespace NKikimr { {} }; - struct TEvBlobStorage::TEvAskWardenRestartPDiskResult : TEventLocal<TEvAskWardenRestartPDiskResult, EvRestartPDisk> { + struct TEvBlobStorage::TEvRestartPDisk : TEventLocal<TEvRestartPDisk, EvRestartPDisk> { const ui32 PDiskId; const NPDisk::TMainKey MainKey; - const bool RestartAllowed; TIntrusivePtr<TPDiskConfig> Config; - TString Details; - TEvAskWardenRestartPDiskResult(const ui32 pdiskId, const NPDisk::TMainKey& mainKey, const bool restartAllowed, const TIntrusivePtr<TPDiskConfig>& config, - TString details = "") + TEvRestartPDisk(const ui32& pdiskId, const NPDisk::TMainKey& mainKey, const TIntrusivePtr<TPDiskConfig>& config) : PDiskId(pdiskId) , MainKey(mainKey) - , RestartAllowed(restartAllowed) , Config(config) - , Details(details) {} }; - struct TEvBlobStorage::TEvNotifyWardenPDiskRestarted : TEventLocal<TEvNotifyWardenPDiskRestarted, EvNotifyWardenPDiskRestarted> { + struct TEvBlobStorage::TEvRestartPDiskResult : TEventLocal<TEvRestartPDiskResult, EvRestartPDiskResult> { const ui32 PDiskId; NKikimrProto::EReplyStatus Status; - TEvNotifyWardenPDiskRestarted(const ui32 pdiskId, NKikimrProto::EReplyStatus status = NKikimrProto::EReplyStatus::OK) + TEvRestartPDiskResult(const ui32& pdiskId, NKikimrProto::EReplyStatus status = NKikimrProto::EReplyStatus::OK) : PDiskId(pdiskId) , Status(status) {} diff --git a/ydb/core/blobstorage/nodewarden/blobstorage_node_warden_ut.cpp b/ydb/core/blobstorage/nodewarden/blobstorage_node_warden_ut.cpp index dba573fcdb..25ce6ab4de 100644 --- a/ydb/core/blobstorage/nodewarden/blobstorage_node_warden_ut.cpp +++ b/ydb/core/blobstorage/nodewarden/blobstorage_node_warden_ut.cpp @@ -822,49 +822,6 @@ Y_UNIT_TEST_SUITE(TBlobStorageWardenTest) { TestHttpMonForPath(""); TestHttpMonForPath("/json/groups"); } - - Y_UNIT_TEST(TestReceivedPDiskRestartNotAllowed) { - TTestActorSystem runtime(1); - runtime.Start(); - - ui32 nodeId = 1; - ui32 pdiskId = 1337; - ui64 cookie = 555; - - auto *appData = runtime.GetAppData(); - appData->DomainsInfo->AddDomain(TDomainsInfo::TDomain::ConstructEmptyDomain("dom", 1).Release()); - - TIntrusivePtr<TNodeWardenConfig> nodeWardenConfig(new TNodeWardenConfig(static_cast<IPDiskServiceFactory*>(new TRealPDiskServiceFactory()))); - - IActor* ac = CreateBSNodeWarden(nodeWardenConfig.Release()); - - TActorId nodeWarden = runtime.Register(ac, nodeId); - - auto fakeBSC = runtime.AllocateEdgeActor(nodeId); - - TActorId pdiskActorId = runtime.AllocateEdgeActor(nodeId); - TActorId pdiskServiceId = MakeBlobStoragePDiskID(nodeId, pdiskId); - - runtime.RegisterService(pdiskServiceId, pdiskActorId); - - runtime.Send(new IEventHandle(nodeWarden, pdiskActorId, new TEvBlobStorage::TEvAskWardenRestartPDisk(pdiskId), 0, cookie), nodeId); - - auto responseEvent = new TEvBlobStorage::TEvControllerConfigResponse(); - - auto res = responseEvent->Record.MutableResponse(); - res->SetSuccess(false); - res->SetErrorDescription("Fake error"); - - runtime.Send(new IEventHandle(nodeWarden, fakeBSC, responseEvent, 0, cookie), nodeId); - - auto evPtr = runtime.WaitForEdgeActorEvent<TEvBlobStorage::TEvAskWardenRestartPDiskResult>(pdiskActorId); - auto restartPDiskEv = evPtr->Get(); - - UNIT_ASSERT(!restartPDiskEv->RestartAllowed); - UNIT_ASSERT_STRINGS_EQUAL("Fake error", restartPDiskEv->Details); - - UNIT_ASSERT_EQUAL(pdiskId, restartPDiskEv->PDiskId); - } } } // namespace NBlobStorageNodeWardenTest diff --git a/ydb/core/blobstorage/nodewarden/node_warden_impl.cpp b/ydb/core/blobstorage/nodewarden/node_warden_impl.cpp index 5675a36e9f..285cee2ad6 100644 --- a/ydb/core/blobstorage/nodewarden/node_warden_impl.cpp +++ b/ydb/core/blobstorage/nodewarden/node_warden_impl.cpp @@ -399,43 +399,15 @@ void TNodeWarden::SendVDiskReport(TVSlotId vslotId, const TVDiskID &vDiskId, NKi SendToController(std::move(report)); } -void TNodeWarden::Handle(TEvBlobStorage::TEvAskWardenRestartPDisk::TPtr ev) { - auto pdiskId = ev->Get()->PDiskId; - auto requestCookie = ev->Cookie; - - for (auto it = PDiskRestartRequests.begin(); it != PDiskRestartRequests.end(); it++) { - if (it->second == pdiskId) { - const TActorId actorId = MakeBlobStoragePDiskID(LocalNodeId, pdiskId); - - Cfg->PDiskKey.Initialize(); - Send(actorId, new TEvBlobStorage::TEvAskWardenRestartPDiskResult(pdiskId, Cfg->PDiskKey, false, nullptr, "Restart already requested")); - - return; - } +void TNodeWarden::Handle(TEvBlobStorage::TEvAskRestartPDisk::TPtr ev) { + const auto id = ev->Get()->PDiskId; + if (auto it = LocalPDisks.find(TPDiskKey{LocalNodeId, id}); it != LocalPDisks.end()) { + RestartLocalPDiskStart(id, CreatePDiskConfig(it->second.Record)); } - - PDiskRestartRequests[requestCookie] = pdiskId; - - AskBSCToRestartPDisk(pdiskId, requestCookie); } -void TNodeWarden::Handle(TEvBlobStorage::TEvNotifyWardenPDiskRestarted::TPtr ev) { - OnPDiskRestartFinished(ev->Get()->PDiskId, ev->Get()->Status); -} - -void TNodeWarden::Handle(TEvBlobStorage::TEvControllerConfigResponse::TPtr ev) { - // Can be a response to RestartPDisk or DropDonorDisk. We are only interested in RestartPDisk. - auto it = PDiskRestartRequests.find(ev->Cookie); - // If cookie is in PDiskRestartRequests, then it's a RestartPDisk. - if (it != PDiskRestartRequests.end()) { - auto res = ev->Get()->Record.GetResponse(); - ui32 pdiskId = it->second; - PDiskRestartRequests.erase(it); - - if (!res.GetSuccess()) { - OnUnableToRestartPDisk(pdiskId, res.GetErrorDescription()); - } - } +void TNodeWarden::Handle(TEvBlobStorage::TEvRestartPDiskResult::TPtr ev) { + RestartLocalPDiskFinish(ev->Get()->PDiskId, ev->Get()->Status); } void TNodeWarden::Handle(TEvBlobStorage::TEvControllerUpdateDiskStatus::TPtr ev) { @@ -516,6 +488,7 @@ void TNodeWarden::Handle(TEvPrivate::TEvUpdateNodeDrives::TPtr&) { Schedule(TDuration::Seconds(10), new TEvPrivate::TEvUpdateNodeDrives()); } + void TNodeWarden::SendDiskMetrics(bool reportMetrics) { STLOG(PRI_TRACE, BS_NODE, NW45, "SendDiskMetrics", (ReportMetrics, reportMetrics)); diff --git a/ydb/core/blobstorage/nodewarden/node_warden_impl.h b/ydb/core/blobstorage/nodewarden/node_warden_impl.h index 904efb95df..1cc803bed3 100644 --- a/ydb/core/blobstorage/nodewarden/node_warden_impl.h +++ b/ydb/core/blobstorage/nodewarden/node_warden_impl.h @@ -90,7 +90,7 @@ namespace NKikimr::NStorage { std::map<TPDiskKey, TPDiskRecord> LocalPDisks; TIntrusiveList<TPDiskRecord, TUnreportedMetricTag> PDisksWithUnreportedMetrics; - std::map<ui64, ui32> PDiskRestartRequests; + std::set<TPDiskKey> InFlightRestartedPDisks; // for sanity checks only ui64 LastScrubCookie = RandomNumber<ui64>(); @@ -152,12 +152,10 @@ namespace NKikimr::NStorage { TIntrusivePtr<TPDiskConfig> CreatePDiskConfig(const NKikimrBlobStorage::TNodeWardenServiceSet::TPDisk& pdisk); void StartLocalPDisk(const NKikimrBlobStorage::TNodeWardenServiceSet::TPDisk& pdisk); - void AskBSCToRestartPDisk(ui32 pdiskId, ui64 requestCookie); - void OnPDiskRestartFinished(ui32 pdiskId, NKikimrProto::EReplyStatus status); + void RestartLocalPDiskStart(ui32 pdiskId, TIntrusivePtr<TPDiskConfig> pdiskConfig); + void RestartLocalPDiskFinish(ui32 pdiskId, NKikimrProto::EReplyStatus status); void DestroyLocalPDisk(ui32 pdiskId); - void DoRestartLocalPDisk(const NKikimrBlobStorage::TNodeWardenServiceSet::TPDisk& pdisk); - void OnUnableToRestartPDisk(ui32 pdiskId, TString error); void ApplyServiceSetPDisks(const NKikimrBlobStorage::TNodeWardenServiceSet& serviceSet); //////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -451,8 +449,6 @@ namespace NKikimr::NStorage { void SendVDiskReport(TVSlotId vslotId, const TVDiskID& vdiskId, NKikimrBlobStorage::TEvControllerNodeReport::EVDiskPhase phase); - void SendPDiskReport(ui32 pdiskId, NKikimrBlobStorage::TEvControllerNodeReport::EPDiskPhase phase); - void Handle(TEvBlobStorage::TEvControllerUpdateDiskStatus::TPtr ev); void Handle(TEvBlobStorage::TEvControllerGroupMetricsExchange::TPtr ev); void Handle(TEvPrivate::TEvSendDiskMetrics::TPtr&); @@ -467,10 +463,9 @@ namespace NKikimr::NStorage { void Handle(TEvStatusUpdate::TPtr ev); void Handle(TEvBlobStorage::TEvDropDonor::TPtr ev); + void Handle(TEvBlobStorage::TEvAskRestartPDisk::TPtr ev); void Handle(TEvBlobStorage::TEvAskRestartVDisk::TPtr ev); - void Handle(TEvBlobStorage::TEvAskWardenRestartPDisk::TPtr ev); - void Handle(TEvBlobStorage::TEvNotifyWardenPDiskRestarted::TPtr ev); - void Handle(TEvBlobStorage::TEvControllerConfigResponse::TPtr ev); + void Handle(TEvBlobStorage::TEvRestartPDiskResult::TPtr ev); void FillInVDiskStatus(google::protobuf::RepeatedPtrField<NKikimrBlobStorage::TVDiskStatus> *pb, bool initial); @@ -540,9 +535,9 @@ namespace NKikimr::NStorage { hFunc(TEvStatusUpdate, Handle); hFunc(TEvBlobStorage::TEvDropDonor, Handle); + hFunc(TEvBlobStorage::TEvAskRestartPDisk, Handle); hFunc(TEvBlobStorage::TEvAskRestartVDisk, Handle); - hFunc(TEvBlobStorage::TEvAskWardenRestartPDisk, Handle); - hFunc(TEvBlobStorage::TEvNotifyWardenPDiskRestarted, Handle); + hFunc(TEvBlobStorage::TEvRestartPDiskResult, Handle); hFunc(TEvGroupStatReport, Handle); @@ -569,7 +564,8 @@ namespace NKikimr::NStorage { // proxy requests for the NodeWhiteboard to prevent races hFunc(NNodeWhiteboard::TEvWhiteboard::TEvBSGroupStateUpdate, Handle); - hFunc(TEvBlobStorage::TEvControllerConfigResponse, Handle); + // ignore as it is used only in response to DropDonorDisk cmd + IgnoreFunc(TEvBlobStorage::TEvControllerConfigResponse); cFunc(TEvPrivate::EvReadCache, HandleReadCache); fFunc(TEvPrivate::EvGetGroup, HandleGetGroup); diff --git a/ydb/core/blobstorage/nodewarden/node_warden_pdisk.cpp b/ydb/core/blobstorage/nodewarden/node_warden_pdisk.cpp index 78d404821b..067305154d 100644 --- a/ydb/core/blobstorage/nodewarden/node_warden_pdisk.cpp +++ b/ydb/core/blobstorage/nodewarden/node_warden_pdisk.cpp @@ -192,32 +192,33 @@ namespace NKikimr::NStorage { } } - void TNodeWarden::SendPDiskReport(ui32 pdiskId, NKikimrBlobStorage::TEvControllerNodeReport::EPDiskPhase phase) { - STLOG(PRI_DEBUG, BS_NODE, NW41, "SendPDiskReport", (PDiskId, pdiskId), (Phase, phase)); - - auto report = std::make_unique<TEvBlobStorage::TEvControllerNodeReport>(LocalNodeId); - auto *pReport = report->Record.AddPDiskReports(); - pReport->SetPDiskId(pdiskId); - pReport->SetPhase(phase); - - SendToController(std::move(report)); - } - - void TNodeWarden::AskBSCToRestartPDisk(ui32 pdiskId, ui64 requestCookie) { - auto ev = std::make_unique<TEvBlobStorage::TEvControllerConfigRequest>(); + void TNodeWarden::RestartLocalPDiskStart(ui32 pdiskId, TIntrusivePtr<TPDiskConfig> pdiskConfig) { + auto it = LocalPDisks.find(TPDiskKey(LocalNodeId, pdiskId)); + if (it == LocalPDisks.end()) { + STLOG(PRI_WARN, BS_NODE, NW66, "Cannot restart local pdisk since there is no such pdisk", + (NodeId, LocalNodeId), (PDiskId, pdiskId)); + return; + } - NKikimrBlobStorage::TRestartPDisk* cmd = ev->Record.MutableRequest()->AddCommand()->MutableRestartPDisk(); - - auto targetPDiskId = cmd->MutableTargetPDiskId(); - targetPDiskId->SetNodeId(LocalNodeId); - targetPDiskId->SetPDiskId(pdiskId); + bool inserted = InFlightRestartedPDisks.emplace(LocalNodeId, pdiskId).second; + if (!inserted) { + STLOG(PRI_WARN, BS_NODE, NW67, "Cannot restart local pdisk since it already in the process of restart", + (NodeId, LocalNodeId), (PDiskId, pdiskId)); + return; + } - SendToController(std::move(ev), requestCookie); + const TActorId actorId = MakeBlobStoragePDiskID(LocalNodeId, pdiskId); + Cfg->PDiskKey.Initialize(); + Send(actorId, new TEvBlobStorage::TEvRestartPDisk(pdiskId, Cfg->PDiskKey, pdiskConfig)); + STLOG(PRI_NOTICE, BS_NODE, NW69, "RestartLocalPDisk is started", (PDiskId, pdiskId)); } - void TNodeWarden::OnPDiskRestartFinished(ui32 pdiskId, NKikimrProto::EReplyStatus status) { + void TNodeWarden::RestartLocalPDiskFinish(ui32 pdiskId, NKikimrProto::EReplyStatus status) { const TPDiskKey pdiskKey(LocalNodeId, pdiskId); + size_t erasedCount = InFlightRestartedPDisks.erase(pdiskKey); + Y_VERIFY_S(erasedCount == 1, "PDiskId# " << pdiskId << " restarted, but wasn't in the process of removal"); + const TVSlotId from(pdiskKey.NodeId, pdiskKey.PDiskId, 0); const TVSlotId to(pdiskKey.NodeId, pdiskKey.PDiskId, Max<ui32>()); @@ -252,35 +253,6 @@ namespace NKikimr::NStorage { } } } - - SendPDiskReport(pdiskId, NKikimrBlobStorage::TEvControllerNodeReport::PD_RESTARTED); - } - - void TNodeWarden::DoRestartLocalPDisk(const NKikimrBlobStorage::TNodeWardenServiceSet::TPDisk& pdisk) { - ui32 pdiskId = pdisk.GetPDiskID(); - - const TActorId actorId = MakeBlobStoragePDiskID(LocalNodeId, pdiskId); - - auto it = LocalPDisks.find(TPDiskKey(LocalNodeId, pdiskId)); - if (it == LocalPDisks.end()) { - // This can happen if warden didn't handle pdisk's restart before node's restart. - // In this case, PDisk has EntityStatus::RESTART instead of EntityStatus::INITIAL. - StartLocalPDisk(pdisk); - SendPDiskReport(pdiskId, NKikimrBlobStorage::TEvControllerNodeReport::PD_RESTARTED); - return; - } - - TIntrusivePtr<TPDiskConfig> pdiskConfig = CreatePDiskConfig(it->second.Record); - - Cfg->PDiskKey.Initialize(); - Send(actorId, new TEvBlobStorage::TEvAskWardenRestartPDiskResult(pdiskId, Cfg->PDiskKey, true, pdiskConfig)); - } - - void TNodeWarden::OnUnableToRestartPDisk(ui32 pdiskId, TString error) { - const TActorId actorId = MakeBlobStoragePDiskID(LocalNodeId, pdiskId); - - Cfg->PDiskKey.Initialize(); - Send(actorId, new TEvBlobStorage::TEvAskWardenRestartPDiskResult(pdiskId, Cfg->PDiskKey, false, nullptr, error)); } void TNodeWarden::ApplyServiceSetPDisks(const NKikimrBlobStorage::TNodeWardenServiceSet& serviceSet) { @@ -305,7 +277,10 @@ namespace NKikimr::NStorage { break; case NKikimrBlobStorage::RESTART: - DoRestartLocalPDisk(pdisk); + if (auto it = LocalPDisks.find({pdisk.GetNodeID(), pdisk.GetPDiskID()}); it != LocalPDisks.end()) { + it->second.Record = pdisk; + } + RestartLocalPDiskStart(pdisk.GetPDiskID(), CreatePDiskConfig(pdisk)); break; } } diff --git a/ydb/core/blobstorage/nodewarden/node_warden_pipe.cpp b/ydb/core/blobstorage/nodewarden/node_warden_pipe.cpp index 905e93ee1a..df3fefae79 100644 --- a/ydb/core/blobstorage/nodewarden/node_warden_pipe.cpp +++ b/ydb/core/blobstorage/nodewarden/node_warden_pipe.cpp @@ -55,7 +55,6 @@ void TNodeWarden::OnPipeError() { VDisksWithUnreportedMetrics.PushBack(&vdisk); } } - PDiskRestartRequests.clear(); EstablishPipe(); } diff --git a/ydb/core/blobstorage/nodewarden/node_warden_vdisk.cpp b/ydb/core/blobstorage/nodewarden/node_warden_vdisk.cpp index cd98920844..5c25c5e328 100644 --- a/ydb/core/blobstorage/nodewarden/node_warden_vdisk.cpp +++ b/ydb/core/blobstorage/nodewarden/node_warden_vdisk.cpp @@ -57,14 +57,16 @@ namespace NKikimr::NStorage { void TNodeWarden::StartLocalVDiskActor(TVDiskRecord& vdisk, TDuration yardInitDelay) { const TVSlotId vslotId = vdisk.GetVSlotId(); const ui64 pdiskGuid = vdisk.Config.GetVDiskLocation().GetPDiskGuid(); + const bool restartInFlight = InFlightRestartedPDisks.count({vslotId.NodeId, vslotId.PDiskId}); const bool donorMode = vdisk.Config.HasDonorMode(); const bool readOnly = vdisk.Config.GetReadOnly(); Y_VERIFY_S(!donorMode || !readOnly, "Only one of modes should be enabled: donorMode " << donorMode << ", readOnly " << readOnly); - STLOG(PRI_DEBUG, BS_NODE, NW23, "StartLocalVDiskActor", (SlayInFlight, SlayInFlight.contains(vslotId)), - (VDiskId, vdisk.GetVDiskId()), (VSlotId, vslotId), (PDiskGuid, pdiskGuid), (DonorMode, donorMode)); + STLOG(PRI_DEBUG, BS_NODE, NW23, "StartLocalVDiskActor", (RestartInFlight, restartInFlight), + (SlayInFlight, SlayInFlight.contains(vslotId)), (VDiskId, vdisk.GetVDiskId()), (VSlotId, vslotId), + (PDiskGuid, pdiskGuid), (DonorMode, donorMode)); - if (SlayInFlight.contains(vslotId)) { + if (restartInFlight || SlayInFlight.contains(vslotId)) { return; } diff --git a/ydb/core/blobstorage/pdisk/blobstorage_pdisk_actor.cpp b/ydb/core/blobstorage/pdisk/blobstorage_pdisk_actor.cpp index 7ad363ecea..852e46ff55 100644 --- a/ydb/core/blobstorage/pdisk/blobstorage_pdisk_actor.cpp +++ b/ydb/core/blobstorage/pdisk/blobstorage_pdisk_actor.cpp @@ -75,13 +75,11 @@ class TPDiskActor : public TActorBootstrapped<TPDiskActor> { THolder<TThread> FormattingThread; bool IsFormattingNow = false; - std::function<void(bool, TString&)> PendingRestartResponse; + std::function<void()> PendingRestartResponse; TActorId NodeWhiteboardServiceId; TActorId NodeWardenServiceId; - ui32 NextRestartRequestCookie = 0; - THolder<IEventHandle> ControledStartResult; class TWhiteboardFlag { @@ -968,31 +966,31 @@ public: InitError("io error"); } - void Handle(TEvBlobStorage::TEvAskWardenRestartPDiskResult::TPtr &ev) { - bool restartAllowed = ev->Get()->RestartAllowed; - - if (restartAllowed) { - MainKey = ev->Get()->MainKey; - SecureWipeBuffer((ui8*)ev->Get()->MainKey.Keys.data(), sizeof(NPDisk::TKey) * ev->Get()->MainKey.Keys.size()); - LOG_NOTICE_S(*TlsActivationContext, NKikimrServices::BS_PDISK, "PDiskId# " << PDisk->PDiskId - << " Going to restart PDisk since recieved TEvAskWardenRestartPDiskResult"); - - PDisk->Stop(); + void Handle(TEvBlobStorage::TEvRestartPDisk::TPtr &ev) { + if (CurrentStateFunc() == &TPDiskActor::StateInit + || CurrentStateFunc() == &TPDiskActor::StateOnline && !Cfg->SectorMap) { + Send(ev->Sender, new TEvBlobStorage::TEvRestartPDiskResult(PDisk->PDiskId, + NKikimrProto::EReplyStatus::ERROR)); + return; + } - auto& newCfg = ev->Get()->Config; - if (newCfg) { - Y_VERIFY_S(Cfg->PDiskId == PDisk->PDiskId, - "New config's PDiskId# " << newCfg->PDiskId << " is not equal to real PDiskId# " << PDisk->PDiskId); - Cfg = std::move(newCfg); - } - - StartPDiskThread(); + MainKey = ev->Get()->MainKey; + SecureWipeBuffer((ui8*)ev->Get()->MainKey.Keys.data(), sizeof(NPDisk::TKey) * ev->Get()->MainKey.Keys.size()); + LOG_NOTICE_S(*TlsActivationContext, NKikimrServices::BS_PDISK, "PDiskId# " << PDisk->PDiskId + << " Going to restart PDisk since recieved TEvRestartPDisk"); + PDisk->Stop(); - Send(ev->Sender, new TEvBlobStorage::TEvNotifyWardenPDiskRestarted(PDisk->PDiskId)); + auto& newCfg = ev->Get()->Config; + if (newCfg) { + Y_VERIFY_S(Cfg->PDiskId == PDisk->PDiskId, + "New config's PDiskId# " << newCfg->PDiskId << " is not equal to real PDiskId# " << PDisk->PDiskId); + Cfg = std::move(newCfg); } + StartPDiskThread(); + Send(ev->Sender, new TEvBlobStorage::TEvRestartPDiskResult(PDisk->PDiskId)); if (PendingRestartResponse) { - PendingRestartResponse(restartAllowed, ev->Get()->Details); + PendingRestartResponse(); PendingRestartResponse = {}; } } @@ -1069,28 +1067,14 @@ public: } } if (cgi.Has("restartPDisk")) { - ui32 cookieIdxPart = NextRestartRequestCookie++; - ui64 fullCookie = (((ui64) PDisk->PDiskId) << 32) | cookieIdxPart; // This way cookie will be unique no matter the disk. - - Send(NodeWardenServiceId, new TEvBlobStorage::TEvAskWardenRestartPDisk(PDisk->PDiskId), fullCookie); - // Send responce later when restart command will be received. - PendingRestartResponse = [this, actor = ev->Sender] (bool restartAllowed, TString& details) { - TStringStream jsonBuilder; - jsonBuilder << NMonitoring::HTTPOKJSON; - - jsonBuilder << "{\"result\":" << (restartAllowed ? "true" : "false"); - - if (!restartAllowed) { - jsonBuilder << ", \"error\": \"" << details << "\""; - } - - jsonBuilder << "}"; - - auto result = std::make_unique<NMon::TEvHttpInfoRes>(jsonBuilder.Str(), 0, NMon::IEvHttpInfoRes::EContentType::Custom); - - Send(actor, result.release()); - }; - return; + if (Cfg->SectorMap || CurrentStateFunc() == &TPDiskActor::StateError) { + Send(NodeWardenServiceId, new TEvBlobStorage::TEvAskRestartPDisk(PDisk->PDiskId)); + // Send responce later when restart command will be received + PendingRestartResponse = [this, actor = ev->Sender] () { + Send(actor, new NMon::TEvHttpInfoRes("")); + }; + return; + } } else if (cgi.Has("stopPDisk")) { if (Cfg->SectorMap) { *PDisk->Mon.PDiskState = NKikimrBlobStorage::TPDiskState::DeviceIoError; @@ -1194,7 +1178,7 @@ public: hFunc(NMon::TEvHttpInfo, InitHandle); cFunc(TEvents::TSystem::Wakeup, HandleWakeup); hFunc(NPDisk::TEvDeviceError, Handle); - hFunc(TEvBlobStorage::TEvAskWardenRestartPDiskResult, Handle); + hFunc(TEvBlobStorage::TEvRestartPDisk, Handle); hFunc(NPDisk::TEvFormatReencryptionFinish, InitHandle); ) @@ -1225,7 +1209,7 @@ public: hFunc(NMon::TEvHttpInfo, Handle); cFunc(TEvents::TSystem::Wakeup, HandleWakeup); hFunc(NPDisk::TEvDeviceError, Handle); - hFunc(TEvBlobStorage::TEvAskWardenRestartPDiskResult, Handle); + hFunc(TEvBlobStorage::TEvRestartPDisk, Handle); ) STRICT_STFUNC(StateError, @@ -1252,7 +1236,7 @@ public: hFunc(NMon::TEvHttpInfo, Handle); cFunc(TEvents::TSystem::Wakeup, HandleWakeup); hFunc(NPDisk::TEvDeviceError, Handle); - hFunc(TEvBlobStorage::TEvAskWardenRestartPDiskResult, Handle); + hFunc(TEvBlobStorage::TEvRestartPDisk, Handle); ) }; diff --git a/ydb/core/blobstorage/pdisk/blobstorage_pdisk_impl_http.cpp b/ydb/core/blobstorage/pdisk/blobstorage_pdisk_impl_http.cpp index 08fa2823d2..4d3cc940b4 100644 --- a/ydb/core/blobstorage/pdisk/blobstorage_pdisk_impl_http.cpp +++ b/ydb/core/blobstorage/pdisk/blobstorage_pdisk_impl_http.cpp @@ -99,15 +99,11 @@ void TPDisk::RenderState(IOutputStream &str, THttpInfo &httpInfo) { DIV() { str << R"___( <script> - function reloadPage(data) { - if (data.result) { - window.location.replace(window.location.href); - } else { - alert(data.error); - } + function reloadPage() { + window.location.replace(window.location.href); } - function sendRestartRequest() { + function sendReloadRequest() { $.ajax({ url: "", data: "restartPDisk=", @@ -126,14 +122,19 @@ void TPDisk::RenderState(IOutputStream &str, THttpInfo &httpInfo) { } </script> )___"; - str << "<button onclick='sendRestartRequest()' name='restartPDisk' class='btn btn-default' "; - str << "style='background:LightGray; margin:5px' "; + str << "<button onClick='sendReloadRequest()' name='restartPDisk' class='btn btn-default' "; + if (Cfg->SectorMap || Mon.PDiskBriefState->Val() == TPDiskMon::TPDisk::Error) { + str << "style='background:Tomato; margin:5px' "; + } else { + str << "disabled "; + str << "style='background:LightGray; margin:5px' "; + } str << ">"; str << "Restart"; str << "</button>"; if (Cfg->SectorMap) { - str << "<button onclick='sendStopRequest()' name='stopPDisk' class='btn btn-default' "; + str << "<button onClick='sendStopRequest()' name='stopPDisk' class='btn btn-default' "; str << "style='background:Tomato; margin:5px'>"; str << "Stop"; str << "</button>"; diff --git a/ydb/core/blobstorage/pdisk/blobstorage_pdisk_ut.cpp b/ydb/core/blobstorage/pdisk/blobstorage_pdisk_ut.cpp index 17fa63b03b..b8e13e261b 100644 --- a/ydb/core/blobstorage/pdisk/blobstorage_pdisk_ut.cpp +++ b/ydb/core/blobstorage/pdisk/blobstorage_pdisk_ut.cpp @@ -506,8 +506,8 @@ Y_UNIT_TEST_SUITE(TPDiskTest) { TVDiskMock vdisk(&testCtx); vdisk.InitFull(); vdisk.SendEvLogSync(); - testCtx.Send(new TEvBlobStorage::TEvAskWardenRestartPDiskResult(testCtx.GetPDisk()->PDiskId, testCtx.MainKey, true, nullptr)); - const auto evInitRes = testCtx.Recv<TEvBlobStorage::TEvNotifyWardenPDiskRestarted>(); + testCtx.Send(new TEvBlobStorage::TEvRestartPDisk(testCtx.GetPDisk()->PDiskId, testCtx.MainKey, nullptr)); + const auto evInitRes = testCtx.Recv<TEvBlobStorage::TEvRestartPDiskResult>(); vdisk.InitFull(); vdisk.SendEvLogSync(); } @@ -528,7 +528,7 @@ Y_UNIT_TEST_SUITE(TPDiskTest) { testCtx.Send(new NPDisk::TEvLog(evInitRes->PDiskParams->Owner, evInitRes->PDiskParams->OwnerRound, 0, logData, TLsnSeg(lsn, lsn), nullptr)); if (i == 100) { - testCtx.Send(new TEvBlobStorage::TEvAskWardenRestartPDiskResult(testCtx.GetPDisk()->PDiskId, testCtx.MainKey, true, nullptr)); + testCtx.Send(new TEvBlobStorage::TEvRestartPDisk(testCtx.GetPDisk()->PDiskId, testCtx.MainKey, nullptr)); } ++lsn; } @@ -541,7 +541,7 @@ Y_UNIT_TEST_SUITE(TPDiskTest) { Ctest << "TEvLogResult status is error" << Endl; } } - testCtx.Recv<TEvBlobStorage::TEvNotifyWardenPDiskRestarted>(); + testCtx.Recv<TEvBlobStorage::TEvRestartPDiskResult>(); } Y_UNIT_TEST(CommitDeleteChunks) { @@ -922,8 +922,8 @@ Y_UNIT_TEST_SUITE(TPDiskTest) { vdisk.SendEvLogSync(); TCompatibilityInfoTest::Reset(&newInfo); - testCtx.Send(new TEvBlobStorage::TEvAskWardenRestartPDiskResult(testCtx.GetPDisk()->PDiskId, testCtx.MainKey, true, nullptr)); - testCtx.Recv<TEvBlobStorage::TEvNotifyWardenPDiskRestarted>(); + testCtx.Send(new TEvBlobStorage::TEvRestartPDisk(testCtx.GetPDisk()->PDiskId, testCtx.MainKey, nullptr)); + testCtx.Recv<TEvBlobStorage::TEvRestartPDiskResult>(); testCtx.Send(new NPDisk::TEvYardInit(vdisk.OwnerRound.fetch_add(1), vdisk.VDiskID, testCtx.TestCtx.PDiskGuid)); const auto evInitRes = testCtx.Recv<NPDisk::TEvYardInitResult>(); if (isCompatible) { @@ -1019,8 +1019,8 @@ Y_UNIT_TEST_SUITE(TPDiskTest) { while (writeLog() == NKikimrProto::OK) {} UNIT_ASSERT_VALUES_EQUAL(writeLog(), NKikimrProto::OUT_OF_SPACE); - testCtx.Send(new TEvBlobStorage::TEvAskWardenRestartPDiskResult(testCtx.GetPDisk()->PDiskId, testCtx.MainKey, true, nullptr)); - const auto evInitRes = testCtx.Recv<TEvBlobStorage::TEvNotifyWardenPDiskRestarted>(); + testCtx.Send(new TEvBlobStorage::TEvRestartPDisk(testCtx.GetPDisk()->PDiskId, testCtx.MainKey, nullptr)); + testCtx.Recv<TEvBlobStorage::TEvRestartPDiskResult>(); vdisk.InitFull(); vdisk.SendEvLogSync(); diff --git a/ydb/core/blobstorage/pdisk/blobstorage_pdisk_ut_actions.cpp b/ydb/core/blobstorage/pdisk/blobstorage_pdisk_ut_actions.cpp index 5ac392f124..f864150b43 100644 --- a/ydb/core/blobstorage/pdisk/blobstorage_pdisk_ut_actions.cpp +++ b/ydb/core/blobstorage/pdisk/blobstorage_pdisk_ut_actions.cpp @@ -1136,7 +1136,7 @@ void TTestChunkUnlockRestart::TestFSM(const TActorContext &ctx) { SignalDoneEvent(); break; } - ctx.Send(NodeWardenId, new TEvBlobStorage::TEvAskWardenRestartPDisk(LastResponse.whiteboardPDiskResult->Record.GetPDiskId())); + ctx.Send(NodeWardenId, new TEvBlobStorage::TEvAskRestartPDisk(LastResponse.whiteboardPDiskResult->Record.GetPDiskId())); break; case 30: TEST_RESPONSE(EvHarakiri, OK); diff --git a/ydb/core/blobstorage/pdisk/mock/pdisk_mock.cpp b/ydb/core/blobstorage/pdisk/mock/pdisk_mock.cpp index 101f4bc9f9..48ddca94f1 100644 --- a/ydb/core/blobstorage/pdisk/mock/pdisk_mock.cpp +++ b/ydb/core/blobstorage/pdisk/mock/pdisk_mock.cpp @@ -824,14 +824,6 @@ public: Send(ev->Sender, res.release()); } - void Handle(TEvBlobStorage::TEvAskWardenRestartPDiskResult::TPtr &ev) { - bool restartAllowed = ev->Get()->RestartAllowed; - - if (restartAllowed) { - Send(ev->Sender, new TEvBlobStorage::TEvNotifyWardenPDiskRestarted(Impl.PDiskId)); - } - } - void Handle(NPDisk::TEvConfigureScheduler::TPtr ev) { auto *msg = ev->Get(); auto res = std::make_unique<NPDisk::TEvConfigureSchedulerResult>(NKikimrProto::OK, TString()); @@ -939,7 +931,6 @@ public: hFunc(NPDisk::TEvSlay, Handle); hFunc(NPDisk::TEvHarakiri, Handle); hFunc(NPDisk::TEvConfigureScheduler, Handle); - hFunc(TEvBlobStorage::TEvAskWardenRestartPDiskResult, Handle); cFunc(TEvents::TSystem::Wakeup, ReportMetrics); cFunc(EvBecomeError, HandleMoveToErrorState); diff --git a/ydb/core/blobstorage/ut_blobstorage/CMakeLists.darwin-x86_64.txt b/ydb/core/blobstorage/ut_blobstorage/CMakeLists.darwin-x86_64.txt index 7d71c223b1..f9b38bd4a3 100644 --- a/ydb/core/blobstorage/ut_blobstorage/CMakeLists.darwin-x86_64.txt +++ b/ydb/core/blobstorage/ut_blobstorage/CMakeLists.darwin-x86_64.txt @@ -14,7 +14,6 @@ add_subdirectory(ut_group_reconfiguration) add_subdirectory(ut_osiris) add_subdirectory(ut_read_only_vdisk) add_subdirectory(ut_replication) -add_subdirectory(ut_restart_pdisk) add_subdirectory(ut_scrub) add_subdirectory(ut_vdisk_restart) diff --git a/ydb/core/blobstorage/ut_blobstorage/CMakeLists.linux-aarch64.txt b/ydb/core/blobstorage/ut_blobstorage/CMakeLists.linux-aarch64.txt index 2bf9366ccb..dfb076e3fb 100644 --- a/ydb/core/blobstorage/ut_blobstorage/CMakeLists.linux-aarch64.txt +++ b/ydb/core/blobstorage/ut_blobstorage/CMakeLists.linux-aarch64.txt @@ -14,7 +14,6 @@ add_subdirectory(ut_group_reconfiguration) add_subdirectory(ut_osiris) add_subdirectory(ut_read_only_vdisk) add_subdirectory(ut_replication) -add_subdirectory(ut_restart_pdisk) add_subdirectory(ut_scrub) add_subdirectory(ut_vdisk_restart) diff --git a/ydb/core/blobstorage/ut_blobstorage/CMakeLists.linux-x86_64.txt b/ydb/core/blobstorage/ut_blobstorage/CMakeLists.linux-x86_64.txt index eab2451b33..831e212021 100644 --- a/ydb/core/blobstorage/ut_blobstorage/CMakeLists.linux-x86_64.txt +++ b/ydb/core/blobstorage/ut_blobstorage/CMakeLists.linux-x86_64.txt @@ -14,7 +14,6 @@ add_subdirectory(ut_group_reconfiguration) add_subdirectory(ut_osiris) add_subdirectory(ut_read_only_vdisk) add_subdirectory(ut_replication) -add_subdirectory(ut_restart_pdisk) add_subdirectory(ut_scrub) add_subdirectory(ut_vdisk_restart) diff --git a/ydb/core/blobstorage/ut_blobstorage/CMakeLists.windows-x86_64.txt b/ydb/core/blobstorage/ut_blobstorage/CMakeLists.windows-x86_64.txt index fe7ea73e3c..6850778337 100644 --- a/ydb/core/blobstorage/ut_blobstorage/CMakeLists.windows-x86_64.txt +++ b/ydb/core/blobstorage/ut_blobstorage/CMakeLists.windows-x86_64.txt @@ -14,7 +14,6 @@ add_subdirectory(ut_group_reconfiguration) add_subdirectory(ut_osiris) add_subdirectory(ut_read_only_vdisk) add_subdirectory(ut_replication) -add_subdirectory(ut_restart_pdisk) add_subdirectory(ut_scrub) add_subdirectory(ut_vdisk_restart) diff --git a/ydb/core/blobstorage/ut_blobstorage/restart_pdisk.cpp b/ydb/core/blobstorage/ut_blobstorage/restart_pdisk.cpp deleted file mode 100644 index 52e7cf7741..0000000000 --- a/ydb/core/blobstorage/ut_blobstorage/restart_pdisk.cpp +++ /dev/null @@ -1,103 +0,0 @@ -#include <ydb/core/blobstorage/base/blobstorage_events.h> -#include <ydb/core/blobstorage/ut_blobstorage/lib/env.h> - -Y_UNIT_TEST_SUITE(BSCRestartPDisk) { - - Y_UNIT_TEST(RestartNotAllowed) { - TEnvironmentSetup env({ - .NodeCount = 10, - .Erasure = TBlobStorageGroupType::Erasure4Plus2Block - }); - - std::unordered_map<TPDiskId, ui64> diskGuids; - - { - env.CreateBoxAndPool(1, 10); - - env.Sim(TDuration::Seconds(30)); - - auto config = env.FetchBaseConfig(); - - for (const NKikimrBlobStorage::TBaseConfig::TPDisk& pdisk : config.GetPDisk()) { - TPDiskId diskId(pdisk.GetNodeId(), pdisk.GetPDiskId()); - - diskGuids[diskId] = pdisk.GetGuid(); - } - - env.Sim(TDuration::Seconds(30)); - } - - int i = 0; - auto it = diskGuids.begin(); - - for (; it != diskGuids.end(); it++, i++) { - auto& diskId = it->first; - - NKikimrBlobStorage::TConfigRequest request; - - NKikimrBlobStorage::TRestartPDisk* cmd = request.AddCommand()->MutableRestartPDisk(); - auto pdiskId = cmd->MutableTargetPDiskId(); - pdiskId->SetNodeId(diskId.NodeId); - pdiskId->SetPDiskId(diskId.PDiskId); - - auto response = env.Invoke(request); - - if (i < 2) { - // Two disks can be restarted. - UNIT_ASSERT_C(response.GetSuccess(), response.GetErrorDescription()); - } else { - // Restarting third disk will not be allowed. - UNIT_ASSERT_C(!response.GetSuccess(), "Restart should've been prohibited"); - - UNIT_ASSERT_STRING_CONTAINS(response.GetErrorDescription(), "ExpectedStatus# DISINTEGRATED"); - break; - } - } - } - - Y_UNIT_TEST(RestartOneByOne) { - TEnvironmentSetup env({ - .NodeCount = 10, - .Erasure = TBlobStorageGroupType::Erasure4Plus2Block - }); - - std::unordered_map<TPDiskId, ui64> diskGuids; - - { - env.CreateBoxAndPool(1, 10); - - env.Sim(TDuration::Seconds(30)); - - auto config = env.FetchBaseConfig(); - - for (const NKikimrBlobStorage::TBaseConfig::TPDisk& pdisk : config.GetPDisk()) { - TPDiskId diskId(pdisk.GetNodeId(), pdisk.GetPDiskId()); - - diskGuids[diskId] = pdisk.GetGuid(); - } - - env.Sim(TDuration::Seconds(30)); - } - - int i = 0; - auto it = diskGuids.begin(); - - for (; it != diskGuids.end(); it++, i++) { - auto& diskId = it->first; - - NKikimrBlobStorage::TConfigRequest request; - - NKikimrBlobStorage::TRestartPDisk* cmd = request.AddCommand()->MutableRestartPDisk(); - auto pdiskId = cmd->MutableTargetPDiskId(); - pdiskId->SetNodeId(diskId.NodeId); - pdiskId->SetPDiskId(diskId.PDiskId); - - auto response = env.Invoke(request); - - UNIT_ASSERT_C(response.GetSuccess(), response.GetErrorDescription()); - - // Wait for VSlot to become ready after PDisk restart. - env.Sim(TDuration::Seconds(30)); - } - } -} diff --git a/ydb/core/blobstorage/ut_blobstorage/ut_restart_pdisk/CMakeLists.darwin-x86_64.txt b/ydb/core/blobstorage/ut_blobstorage/ut_restart_pdisk/CMakeLists.darwin-x86_64.txt deleted file mode 100644 index d87e986781..0000000000 --- a/ydb/core/blobstorage/ut_blobstorage/ut_restart_pdisk/CMakeLists.darwin-x86_64.txt +++ /dev/null @@ -1,74 +0,0 @@ - -# This file was generated by the build system used internally in the Yandex monorepo. -# Only simple modifications are allowed (adding source-files to targets, adding simple properties -# like target_include_directories). These modifications will be ported to original -# ya.make files by maintainers. Any complex modifications which can't be ported back to the -# original buildsystem will not be accepted. - - - -add_executable(blobstorage-ut_blobstorage-ut_restart_pdisk) -target_include_directories(blobstorage-ut_blobstorage-ut_restart_pdisk PRIVATE - ${CMAKE_SOURCE_DIR}/ydb/core/blobstorage/ut_blobstorage -) -target_link_libraries(blobstorage-ut_blobstorage-ut_restart_pdisk PUBLIC - contrib-libs-cxxsupp - yutil - library-cpp-cpuid_check - cpp-testing-unittest_main - blobstorage-ut_blobstorage-lib -) -target_link_options(blobstorage-ut_blobstorage-ut_restart_pdisk PRIVATE - -Wl,-platform_version,macos,11.0,11.0 - -fPIC - -fPIC - -framework - CoreFoundation -) -target_sources(blobstorage-ut_blobstorage-ut_restart_pdisk PRIVATE - ${CMAKE_SOURCE_DIR}/ydb/core/blobstorage/ut_blobstorage/restart_pdisk.cpp -) -set_property( - TARGET - blobstorage-ut_blobstorage-ut_restart_pdisk - PROPERTY - SPLIT_FACTOR - 10 -) -add_yunittest( - NAME - blobstorage-ut_blobstorage-ut_restart_pdisk - TEST_TARGET - blobstorage-ut_blobstorage-ut_restart_pdisk - TEST_ARG - --print-before-suite - --print-before-test - --fork-tests - --print-times - --show-fails -) -set_yunittest_property( - TEST - blobstorage-ut_blobstorage-ut_restart_pdisk - PROPERTY - LABELS - MEDIUM -) -set_yunittest_property( - TEST - blobstorage-ut_blobstorage-ut_restart_pdisk - PROPERTY - PROCESSORS - 1 -) -set_yunittest_property( - TEST - blobstorage-ut_blobstorage-ut_restart_pdisk - PROPERTY - TIMEOUT - 600 -) -target_allocator(blobstorage-ut_blobstorage-ut_restart_pdisk - system_allocator -) -vcs_info(blobstorage-ut_blobstorage-ut_restart_pdisk) diff --git a/ydb/core/blobstorage/ut_blobstorage/ut_restart_pdisk/CMakeLists.linux-aarch64.txt b/ydb/core/blobstorage/ut_blobstorage/ut_restart_pdisk/CMakeLists.linux-aarch64.txt deleted file mode 100644 index 8a64868274..0000000000 --- a/ydb/core/blobstorage/ut_blobstorage/ut_restart_pdisk/CMakeLists.linux-aarch64.txt +++ /dev/null @@ -1,77 +0,0 @@ - -# This file was generated by the build system used internally in the Yandex monorepo. -# Only simple modifications are allowed (adding source-files to targets, adding simple properties -# like target_include_directories). These modifications will be ported to original -# ya.make files by maintainers. Any complex modifications which can't be ported back to the -# original buildsystem will not be accepted. - - - -add_executable(blobstorage-ut_blobstorage-ut_restart_pdisk) -target_include_directories(blobstorage-ut_blobstorage-ut_restart_pdisk PRIVATE - ${CMAKE_SOURCE_DIR}/ydb/core/blobstorage/ut_blobstorage -) -target_link_libraries(blobstorage-ut_blobstorage-ut_restart_pdisk PUBLIC - contrib-libs-linux-headers - contrib-libs-cxxsupp - yutil - cpp-testing-unittest_main - blobstorage-ut_blobstorage-lib -) -target_link_options(blobstorage-ut_blobstorage-ut_restart_pdisk PRIVATE - -ldl - -lrt - -Wl,--no-as-needed - -fPIC - -fPIC - -lpthread - -lrt - -ldl -) -target_sources(blobstorage-ut_blobstorage-ut_restart_pdisk PRIVATE - ${CMAKE_SOURCE_DIR}/ydb/core/blobstorage/ut_blobstorage/restart_pdisk.cpp -) -set_property( - TARGET - blobstorage-ut_blobstorage-ut_restart_pdisk - PROPERTY - SPLIT_FACTOR - 10 -) -add_yunittest( - NAME - blobstorage-ut_blobstorage-ut_restart_pdisk - TEST_TARGET - blobstorage-ut_blobstorage-ut_restart_pdisk - TEST_ARG - --print-before-suite - --print-before-test - --fork-tests - --print-times - --show-fails -) -set_yunittest_property( - TEST - blobstorage-ut_blobstorage-ut_restart_pdisk - PROPERTY - LABELS - MEDIUM -) -set_yunittest_property( - TEST - blobstorage-ut_blobstorage-ut_restart_pdisk - PROPERTY - PROCESSORS - 1 -) -set_yunittest_property( - TEST - blobstorage-ut_blobstorage-ut_restart_pdisk - PROPERTY - TIMEOUT - 600 -) -target_allocator(blobstorage-ut_blobstorage-ut_restart_pdisk - cpp-malloc-jemalloc -) -vcs_info(blobstorage-ut_blobstorage-ut_restart_pdisk) diff --git a/ydb/core/blobstorage/ut_blobstorage/ut_restart_pdisk/CMakeLists.linux-x86_64.txt b/ydb/core/blobstorage/ut_blobstorage/ut_restart_pdisk/CMakeLists.linux-x86_64.txt deleted file mode 100644 index eb549ccd27..0000000000 --- a/ydb/core/blobstorage/ut_blobstorage/ut_restart_pdisk/CMakeLists.linux-x86_64.txt +++ /dev/null @@ -1,79 +0,0 @@ - -# This file was generated by the build system used internally in the Yandex monorepo. -# Only simple modifications are allowed (adding source-files to targets, adding simple properties -# like target_include_directories). These modifications will be ported to original -# ya.make files by maintainers. Any complex modifications which can't be ported back to the -# original buildsystem will not be accepted. - - - -add_executable(blobstorage-ut_blobstorage-ut_restart_pdisk) -target_include_directories(blobstorage-ut_blobstorage-ut_restart_pdisk PRIVATE - ${CMAKE_SOURCE_DIR}/ydb/core/blobstorage/ut_blobstorage -) -target_link_libraries(blobstorage-ut_blobstorage-ut_restart_pdisk PUBLIC - contrib-libs-linux-headers - contrib-libs-cxxsupp - yutil - library-cpp-cpuid_check - cpp-testing-unittest_main - blobstorage-ut_blobstorage-lib -) -target_link_options(blobstorage-ut_blobstorage-ut_restart_pdisk PRIVATE - -ldl - -lrt - -Wl,--no-as-needed - -fPIC - -fPIC - -lpthread - -lrt - -ldl -) -target_sources(blobstorage-ut_blobstorage-ut_restart_pdisk PRIVATE - ${CMAKE_SOURCE_DIR}/ydb/core/blobstorage/ut_blobstorage/restart_pdisk.cpp -) -set_property( - TARGET - blobstorage-ut_blobstorage-ut_restart_pdisk - PROPERTY - SPLIT_FACTOR - 10 -) -add_yunittest( - NAME - blobstorage-ut_blobstorage-ut_restart_pdisk - TEST_TARGET - blobstorage-ut_blobstorage-ut_restart_pdisk - TEST_ARG - --print-before-suite - --print-before-test - --fork-tests - --print-times - --show-fails -) -set_yunittest_property( - TEST - blobstorage-ut_blobstorage-ut_restart_pdisk - PROPERTY - LABELS - MEDIUM -) -set_yunittest_property( - TEST - blobstorage-ut_blobstorage-ut_restart_pdisk - PROPERTY - PROCESSORS - 1 -) -set_yunittest_property( - TEST - blobstorage-ut_blobstorage-ut_restart_pdisk - PROPERTY - TIMEOUT - 600 -) -target_allocator(blobstorage-ut_blobstorage-ut_restart_pdisk - cpp-malloc-tcmalloc - libs-tcmalloc-no_percpu_cache -) -vcs_info(blobstorage-ut_blobstorage-ut_restart_pdisk) diff --git a/ydb/core/blobstorage/ut_blobstorage/ut_restart_pdisk/CMakeLists.txt b/ydb/core/blobstorage/ut_blobstorage/ut_restart_pdisk/CMakeLists.txt deleted file mode 100644 index f8b31df0c1..0000000000 --- a/ydb/core/blobstorage/ut_blobstorage/ut_restart_pdisk/CMakeLists.txt +++ /dev/null @@ -1,17 +0,0 @@ - -# This file was generated by the build system used internally in the Yandex monorepo. -# Only simple modifications are allowed (adding source-files to targets, adding simple properties -# like target_include_directories). These modifications will be ported to original -# ya.make files by maintainers. Any complex modifications which can't be ported back to the -# original buildsystem will not be accepted. - - -if (CMAKE_SYSTEM_NAME STREQUAL "Linux" AND CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64" AND NOT HAVE_CUDA) - include(CMakeLists.linux-aarch64.txt) -elseif (CMAKE_SYSTEM_NAME STREQUAL "Darwin" AND CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64") - include(CMakeLists.darwin-x86_64.txt) -elseif (WIN32 AND CMAKE_SYSTEM_PROCESSOR STREQUAL "AMD64" AND NOT HAVE_CUDA) - include(CMakeLists.windows-x86_64.txt) -elseif (CMAKE_SYSTEM_NAME STREQUAL "Linux" AND CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64" AND NOT HAVE_CUDA) - include(CMakeLists.linux-x86_64.txt) -endif() diff --git a/ydb/core/blobstorage/ut_blobstorage/ut_restart_pdisk/CMakeLists.windows-x86_64.txt b/ydb/core/blobstorage/ut_blobstorage/ut_restart_pdisk/CMakeLists.windows-x86_64.txt deleted file mode 100644 index e6b7886dbd..0000000000 --- a/ydb/core/blobstorage/ut_blobstorage/ut_restart_pdisk/CMakeLists.windows-x86_64.txt +++ /dev/null @@ -1,67 +0,0 @@ - -# This file was generated by the build system used internally in the Yandex monorepo. -# Only simple modifications are allowed (adding source-files to targets, adding simple properties -# like target_include_directories). These modifications will be ported to original -# ya.make files by maintainers. Any complex modifications which can't be ported back to the -# original buildsystem will not be accepted. - - - -add_executable(blobstorage-ut_blobstorage-ut_restart_pdisk) -target_include_directories(blobstorage-ut_blobstorage-ut_restart_pdisk PRIVATE - ${CMAKE_SOURCE_DIR}/ydb/core/blobstorage/ut_blobstorage -) -target_link_libraries(blobstorage-ut_blobstorage-ut_restart_pdisk PUBLIC - contrib-libs-cxxsupp - yutil - library-cpp-cpuid_check - cpp-testing-unittest_main - blobstorage-ut_blobstorage-lib -) -target_sources(blobstorage-ut_blobstorage-ut_restart_pdisk PRIVATE - ${CMAKE_SOURCE_DIR}/ydb/core/blobstorage/ut_blobstorage/restart_pdisk.cpp -) -set_property( - TARGET - blobstorage-ut_blobstorage-ut_restart_pdisk - PROPERTY - SPLIT_FACTOR - 10 -) -add_yunittest( - NAME - blobstorage-ut_blobstorage-ut_restart_pdisk - TEST_TARGET - blobstorage-ut_blobstorage-ut_restart_pdisk - TEST_ARG - --print-before-suite - --print-before-test - --fork-tests - --print-times - --show-fails -) -set_yunittest_property( - TEST - blobstorage-ut_blobstorage-ut_restart_pdisk - PROPERTY - LABELS - MEDIUM -) -set_yunittest_property( - TEST - blobstorage-ut_blobstorage-ut_restart_pdisk - PROPERTY - PROCESSORS - 1 -) -set_yunittest_property( - TEST - blobstorage-ut_blobstorage-ut_restart_pdisk - PROPERTY - TIMEOUT - 600 -) -target_allocator(blobstorage-ut_blobstorage-ut_restart_pdisk - system_allocator -) -vcs_info(blobstorage-ut_blobstorage-ut_restart_pdisk) diff --git a/ydb/core/blobstorage/ut_blobstorage/ut_restart_pdisk/ya.make b/ydb/core/blobstorage/ut_blobstorage/ut_restart_pdisk/ya.make deleted file mode 100644 index c56ef93593..0000000000 --- a/ydb/core/blobstorage/ut_blobstorage/ut_restart_pdisk/ya.make +++ /dev/null @@ -1,17 +0,0 @@ -UNITTEST_FOR(ydb/core/blobstorage/ut_blobstorage) - - FORK_SUBTESTS() - - SIZE(MEDIUM) - - TIMEOUT(600) - - SRCS( - restart_pdisk.cpp - ) - - PEERDIR( - ydb/core/blobstorage/ut_blobstorage/lib - ) - -END() diff --git a/ydb/core/blobstorage/ut_blobstorage/ya.make b/ydb/core/blobstorage/ut_blobstorage/ya.make index 865dd03fe6..c2acdec391 100644 --- a/ydb/core/blobstorage/ut_blobstorage/ya.make +++ b/ydb/core/blobstorage/ut_blobstorage/ya.make @@ -68,5 +68,4 @@ RECURSE_FOR_TESTS( ut_replication ut_scrub ut_vdisk_restart - ut_restart_pdisk ) diff --git a/ydb/core/mind/bscontroller/bsc.cpp b/ydb/core/mind/bscontroller/bsc.cpp index 72e7bf9be7..5a47a0e697 100644 --- a/ydb/core/mind/bscontroller/bsc.cpp +++ b/ydb/core/mind/bscontroller/bsc.cpp @@ -69,7 +69,7 @@ void TBlobStorageController::TGroupInfo::CalculateGroupStatus() { TBlobStorageGroupInfo::TGroupVDisks failed(Topology.get()); TBlobStorageGroupInfo::TGroupVDisks failedByPDisk(Topology.get()); for (const TVSlotInfo *slot : VDisksInGroup) { - if (!slot->IsReady || slot->PDisk->Mood == TPDiskMood::Restarting) { + if (!slot->IsReady) { failed |= {Topology.get(), slot->GetShortVDiskId()}; } else if (!slot->PDisk->HasGoodExpectedStatus()) { failedByPDisk |= {Topology.get(), slot->GetShortVDiskId()}; @@ -446,7 +446,6 @@ ui32 TBlobStorageController::GetEventPriority(IEventHandle *ev) { case NKikimrBlobStorage::TConfigRequest::TCommand::kSanitizeGroup: case NKikimrBlobStorage::TConfigRequest::TCommand::kCancelVirtualGroup: case NKikimrBlobStorage::TConfigRequest::TCommand::kSetVDiskReadOnly: - case NKikimrBlobStorage::TConfigRequest::TCommand::kRestartPDisk: return 2; // read-write commands go with higher priority as they are needed to keep cluster intact case NKikimrBlobStorage::TConfigRequest::TCommand::kReadHostConfig: diff --git a/ydb/core/mind/bscontroller/cmds_box.cpp b/ydb/core/mind/bscontroller/cmds_box.cpp index de7ac0a1b6..f4366fc6cc 100644 --- a/ydb/core/mind/bscontroller/cmds_box.cpp +++ b/ydb/core/mind/bscontroller/cmds_box.cpp @@ -197,26 +197,4 @@ namespace NKikimr::NBsController { boxes.erase(cmd.GetOriginBoxId()); } - void TBlobStorageController::TConfigState::ExecuteStep(const NKikimrBlobStorage::TRestartPDisk& cmd, TStatus& /*status*/) { - auto targetPDiskId = cmd.GetTargetPDiskId(); - - TPDiskId pdiskId(targetPDiskId.GetNodeId(), targetPDiskId.GetPDiskId()); - - TPDiskInfo *pdisk = PDisks.FindForUpdate(pdiskId); - - if (!pdisk) { - throw TExPDiskNotFound(pdiskId.NodeId, pdiskId.PDiskId); - } - - pdisk->Mood = TPDiskMood::Restarting; - - for (const auto& [id, slot] : pdisk->VSlotsOnPDisk) { - if (slot->Group) { - TGroupInfo *group = Groups.FindForUpdate(slot->Group->ID); - - group->CalculateGroupStatus(); - } - } - } - } // namespace NKikimr::NBsController diff --git a/ydb/core/mind/bscontroller/cmds_storage_pool.cpp b/ydb/core/mind/bscontroller/cmds_storage_pool.cpp index ad0f037e26..c85935ea31 100644 --- a/ydb/core/mind/bscontroller/cmds_storage_pool.cpp +++ b/ydb/core/mind/bscontroller/cmds_storage_pool.cpp @@ -647,6 +647,7 @@ namespace NKikimr::NBsController { DestroyVSlot(vslotId); } + void TBlobStorageController::TConfigState::ExecuteStep(const NKikimrBlobStorage::TWipeVDisk& cmd, TStatus& /*status*/) { // first, find matching vslot const TVSlotId& vslotId = cmd.GetVSlotId(); diff --git a/ydb/core/mind/bscontroller/config.cpp b/ydb/core/mind/bscontroller/config.cpp index a23403646d..32ffdcb32c 100644 --- a/ydb/core/mind/bscontroller/config.cpp +++ b/ydb/core/mind/bscontroller/config.cpp @@ -44,8 +44,6 @@ namespace NKikimr::NBsController { ApplyPDiskDeleted(overlay->first, *base->second); } else if (!base) { ApplyPDiskCreated(overlay->first, *overlay->second); - } else { - ApplyPDiskDiff(overlay->first, *base->second, *overlay->second); } } for (auto&& [base, overlay] : State.VSlots.Diff()) { @@ -84,13 +82,6 @@ namespace NKikimr::NBsController { } } - void ApplyPDiskDiff(const TPDiskId &pdiskId, const TPDiskInfo &prev, const TPDiskInfo &cur) { - if (prev.Mood != cur.Mood) { - // PDisk's mood has changed - CreatePDiskEntry(pdiskId, cur); - } - } - NKikimrBlobStorage::TNodeWardenServiceSet::TPDisk *CreatePDiskEntry(const TPDiskId &fullPDiskId, const TPDiskInfo &pdiskInfo) { const ui32 nodeId = fullPDiskId.NodeId; @@ -114,14 +105,6 @@ namespace NKikimr::NBsController { } pdisk->SetSpaceColorBorder(Self->PDiskSpaceColorBorder); - switch (pdiskInfo.Mood) { - case NBsController::TPDiskMood::EValue::Normal: - break; - case NBsController::TPDiskMood::EValue::Restarting: - pdisk->SetEntityStatus(NKikimrBlobStorage::RESTART); - break; - } - return pdisk; } diff --git a/ydb/core/mind/bscontroller/config.h b/ydb/core/mind/bscontroller/config.h index b915c91491..1494872527 100644 --- a/ydb/core/mind/bscontroller/config.h +++ b/ydb/core/mind/bscontroller/config.h @@ -306,7 +306,6 @@ namespace NKikimr { void ExecuteStep(const NKikimrBlobStorage::TSanitizeGroup& cmd, TStatus& status); void ExecuteStep(const NKikimrBlobStorage::TCancelVirtualGroup& cmd, TStatus& status); void ExecuteStep(const NKikimrBlobStorage::TSetVDiskReadOnly& cmd, TStatus& status); - void ExecuteStep(const NKikimrBlobStorage::TRestartPDisk& cmd, TStatus& status); }; } // NBsController diff --git a/ydb/core/mind/bscontroller/config_cmd.cpp b/ydb/core/mind/bscontroller/config_cmd.cpp index 4abaffe222..5f0c60a8a1 100644 --- a/ydb/core/mind/bscontroller/config_cmd.cpp +++ b/ydb/core/mind/bscontroller/config_cmd.cpp @@ -344,7 +344,6 @@ namespace NKikimr::NBsController { HANDLE_COMMAND(SanitizeGroup) HANDLE_COMMAND(CancelVirtualGroup) HANDLE_COMMAND(SetVDiskReadOnly) - HANDLE_COMMAND(RestartPDisk) case NKikimrBlobStorage::TConfigRequest::TCommand::kAddMigrationPlan: case NKikimrBlobStorage::TConfigRequest::TCommand::kDeleteMigrationPlan: diff --git a/ydb/core/mind/bscontroller/config_fit_pdisks.cpp b/ydb/core/mind/bscontroller/config_fit_pdisks.cpp index 26cf98546d..35c13cfc3d 100644 --- a/ydb/core/mind/bscontroller/config_fit_pdisks.cpp +++ b/ydb/core/mind/bscontroller/config_fit_pdisks.cpp @@ -343,7 +343,7 @@ namespace NKikimr { disk.PDiskCategory.GetRaw(), guid, disk.SharedWithOs, disk.ReadCentric, /* nextVslotId */ 1000, disk.PDiskConfig, disk.BoxId, DefaultMaxSlots, NKikimrBlobStorage::EDriveStatus::ACTIVE, /* statusTimestamp */ TInstant::Zero(), - NKikimrBlobStorage::EDecommitStatus::DECOMMIT_NONE, NBsController::TPDiskMood::Normal, + NKikimrBlobStorage::EDecommitStatus::DECOMMIT_NONE, disk.Serial, disk.LastSeenSerial, disk.LastSeenPath, staticSlotUsage); // Set PDiskId and Guid in DrivesSerials diff --git a/ydb/core/mind/bscontroller/error.h b/ydb/core/mind/bscontroller/error.h index 704f722eee..6d8401826d 100644 --- a/ydb/core/mind/bscontroller/error.h +++ b/ydb/core/mind/bscontroller/error.h @@ -120,12 +120,6 @@ namespace NKikimr::NBsController { << TErrorParams::Path(path); } - TExPDiskNotFound(ui32 nodeId, ui32 pdiskId) { - *this << "PDisk not found" - << TErrorParams::NodeId(nodeId) - << TErrorParams::PDiskId(pdiskId); - } - NKikimrBlobStorage::TConfigResponse::TStatus::EFailReason GetFailReason() const override { return NKikimrBlobStorage::TConfigResponse::TStatus::kPDiskNotFound; } diff --git a/ydb/core/mind/bscontroller/impl.h b/ydb/core/mind/bscontroller/impl.h index 2ecfcfa2d9..e18a74ccfa 100644 --- a/ydb/core/mind/bscontroller/impl.h +++ b/ydb/core/mind/bscontroller/impl.h @@ -334,7 +334,6 @@ public: NKikimrBlobStorage::EDriveStatus Status; TInstant StatusTimestamp; NKikimrBlobStorage::EDecommitStatus DecommitStatus; - Table::Mood::Type Mood; TString ExpectedSerial; TString LastSeenSerial; TString LastSeenPath; @@ -352,7 +351,6 @@ public: Table::PDiskConfig, Table::Status, Table::Timestamp, - Table::Mood, Table::ExpectedSerial, Table::LastSeenSerial, Table::LastSeenPath, @@ -367,7 +365,6 @@ public: &TPDiskInfo::PDiskConfig, &TPDiskInfo::Status, &TPDiskInfo::StatusTimestamp, - &TPDiskInfo::Mood, &TPDiskInfo::ExpectedSerial, &TPDiskInfo::LastSeenSerial, &TPDiskInfo::LastSeenPath, @@ -389,7 +386,6 @@ public: NKikimrBlobStorage::EDriveStatus status, TInstant statusTimestamp, NKikimrBlobStorage::EDecommitStatus decommitStatus, - Table::Mood::Type mood, const TString& expectedSerial, const TString& lastSeenSerial, const TString& lastSeenPath, @@ -406,7 +402,6 @@ public: , Status(status) , StatusTimestamp(statusTimestamp) , DecommitStatus(decommitStatus) - , Mood(mood) , ExpectedSerial(expectedSerial) , LastSeenSerial(lastSeenSerial) , LastSeenPath(lastSeenPath) diff --git a/ydb/core/mind/bscontroller/load_everything.cpp b/ydb/core/mind/bscontroller/load_everything.cpp index 6c99b5ac9d..5b2806f754 100644 --- a/ydb/core/mind/bscontroller/load_everything.cpp +++ b/ydb/core/mind/bscontroller/load_everything.cpp @@ -320,7 +320,7 @@ public: disks.GetValue<T::Guid>(), getOpt(T::SharedWithOs()), getOpt(T::ReadCentric()), disks.GetValueOrDefault<T::NextVSlotId>(), disks.GetValue<T::PDiskConfig>(), boxId, Self->DefaultMaxSlots, disks.GetValue<T::Status>(), disks.GetValue<T::Timestamp>(), - disks.GetValue<T::DecommitStatus>(), disks.GetValue<T::Mood>(), disks.GetValue<T::ExpectedSerial>(), + disks.GetValue<T::DecommitStatus>(), disks.GetValue<T::ExpectedSerial>(), disks.GetValue<T::LastSeenSerial>(), disks.GetValue<T::LastSeenPath>(), staticSlotUsage); if (!disks.Next()) diff --git a/ydb/core/mind/bscontroller/mood.h b/ydb/core/mind/bscontroller/mood.h index ccb41e9a38..68488ff603 100644 --- a/ydb/core/mind/bscontroller/mood.h +++ b/ydb/core/mind/bscontroller/mood.h @@ -30,22 +30,5 @@ struct TMood { } }; -struct TPDiskMood { - enum EValue : ui8 { - Normal = 0, - Restarting = 1 - }; - - static TString Name(const EValue value) { - switch (value) { - case Normal: - return "Normal"; - case Restarting: - return "Restarting"; - } - return Sprintf("Unknown%" PRIu64, (ui64)value); - } -}; - } // NBsController } // NKikimr diff --git a/ydb/core/mind/bscontroller/node_report.cpp b/ydb/core/mind/bscontroller/node_report.cpp index 7303650118..6cb9cfbbce 100644 --- a/ydb/core/mind/bscontroller/node_report.cpp +++ b/ydb/core/mind/bscontroller/node_report.cpp @@ -74,30 +74,6 @@ public: } } - for (const auto& report : record.GetPDiskReports()) { - if (!report.HasPDiskId() || !report.HasPhase()) { - continue; // ignore incorrect report - } - - TPDiskId pdiskId(record.GetNodeId(), report.GetPDiskId()); - - TPDiskInfo *pdisk = State->PDisks.FindForUpdate(pdiskId); - if (!pdisk) { - continue; - } - - switch (report.GetPhase()) { - case NKikimrBlobStorage::TEvControllerNodeReport::PD_UNKNOWN: - continue; - - case NKikimrBlobStorage::TEvControllerNodeReport::PD_RESTARTED: - if (pdisk->Mood == TPDiskMood::Restarting) { - pdisk->Mood = TPDiskMood::Normal; - } - break; - } - } - State->CheckConsistency(); TString error; if (State->Changed() && !Self->CommitConfigUpdates(*State, false, false, false, txc, &error)) { diff --git a/ydb/core/mind/bscontroller/register_node.cpp b/ydb/core/mind/bscontroller/register_node.cpp index 4ad9bdf199..8dabdab993 100644 --- a/ydb/core/mind/bscontroller/register_node.cpp +++ b/ydb/core/mind/bscontroller/register_node.cpp @@ -304,15 +304,7 @@ public: Self->ReadGroups(groupsToDiscard, true, res.get(), nodeId); for (auto it = Self->PDisks.lower_bound(minPDiskId); it != Self->PDisks.end() && it->first.NodeId == nodeId; ++it) { - auto& pdisk = it->second; - - NKikimrBlobStorage::EEntityStatus entityStatus = NKikimrBlobStorage::INITIAL; - - if (pdisk->Mood == TPDiskMood::Restarting) { - entityStatus = NKikimrBlobStorage::RESTART; - } - - Self->ReadPDisk(it->first, *pdisk, res.get(), entityStatus); + Self->ReadPDisk(it->first, *it->second, res.get(), NKikimrBlobStorage::INITIAL); } res->Record.SetInstanceId(Self->InstanceId); diff --git a/ydb/core/mind/bscontroller/scheme.h b/ydb/core/mind/bscontroller/scheme.h index 57eca4c019..16928818fa 100644 --- a/ydb/core/mind/bscontroller/scheme.h +++ b/ydb/core/mind/bscontroller/scheme.h @@ -1,7 +1,6 @@ #pragma once #include "defs.h" -#include "mood.h" namespace NKikimr { namespace NBsController { @@ -41,11 +40,10 @@ struct Schema : NIceDb::Schema { struct LastSeenSerial : Column<15, NScheme::NTypeIds::String> {}; struct LastSeenPath : Column<16, NScheme::NTypeIds::String> {}; struct DecommitStatus : Column<17, NScheme::NTypeIds::Uint32> { using Type = NKikimrBlobStorage::EDecommitStatus; static constexpr Type Default = Type::DECOMMIT_NONE; }; - struct Mood : Column<18, NScheme::NTypeIds::Uint8> { using Type = TPDiskMood::EValue; static constexpr Type Default = Type::Normal; }; using TKey = TableKey<NodeID, PDiskID>; // order is important using TColumns = TableColumns<NodeID, PDiskID, Path, Category, Guid, SharedWithOs, ReadCentric, NextVSlotId, - Status, Timestamp, PDiskConfig, ExpectedSerial, LastSeenSerial, LastSeenPath, DecommitStatus, Mood>; + Status, Timestamp, PDiskConfig, ExpectedSerial, LastSeenSerial, LastSeenPath, DecommitStatus>; }; struct Group : Table<4> { diff --git a/ydb/core/protos/blobstorage.proto b/ydb/core/protos/blobstorage.proto index 2341783642..0f6cfc8292 100644 --- a/ydb/core/protos/blobstorage.proto +++ b/ydb/core/protos/blobstorage.proto @@ -1320,18 +1320,8 @@ message TEvControllerNodeReport { optional EVDiskPhase Phase = 3; } - enum EPDiskPhase { - PD_UNKNOWN = 0; - PD_RESTARTED = 1; - } - message TPDiskReport { - optional uint32 PDiskId = 1; - optional EPDiskPhase Phase = 2; - } - optional uint32 NodeId = 1; repeated TVDiskReport VDiskReports = 2; - repeated TPDiskReport PDiskReports = 3; } message TEvControllerGroupDecommittedNotify { diff --git a/ydb/core/protos/blobstorage_config.proto b/ydb/core/protos/blobstorage_config.proto index bb756302f7..064e170249 100644 --- a/ydb/core/protos/blobstorage_config.proto +++ b/ydb/core/protos/blobstorage_config.proto @@ -400,10 +400,6 @@ message TWipeVDisk { NKikimrBlobStorage.TVDiskID VDiskId = 2; } -message TRestartPDisk { - TPDiskId TargetPDiskId = 1; -} - message TSetScrubPeriodicity { uint32 ScrubPeriodicity = 1; // in seconds; 0 = disable } @@ -535,7 +531,6 @@ message TConfigRequest { TReadSettings ReadSettings = 43; TCancelVirtualGroup CancelVirtualGroup = 44; TSetVDiskReadOnly SetVDiskReadOnly = 47; - TRestartPDisk RestartPDisk = 48; // commands intended for internal use TReassignGroupDisk ReassignGroupDisk = 19; |