aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsenya0x5f <senya0x5f@yandex-team.com>2023-11-08 23:52:20 +0300
committersenya0x5f <senya0x5f@yandex-team.com>2023-11-09 00:09:39 +0300
commitc6e5c42ae9a0d28e10f881f66c3de54ae039b8ce (patch)
treee52f342fa0d2c2fbefb692dc4ce11f842ffc6312
parent8dd9800abc35191e880e21d3e9af5017032589b9 (diff)
downloadydb-c6e5c42ae9a0d28e10f881f66c3de54ae039b8ce.tar.gz
Revert "KIKIMR-11137 PDisk restart button"
This reverts commit 9d82932fee76342f47bd05ea78395d59781c2b40, reversing changes made to b6df980b3aef9c49fc9868d17eb224b2fcc75a09.
-rw-r--r--.mapping.json5
-rw-r--r--ydb/core/base/blobstorage.h14
-rw-r--r--ydb/core/blobstorage/base/blobstorage_events.h18
-rw-r--r--ydb/core/blobstorage/nodewarden/blobstorage_node_warden_ut.cpp43
-rw-r--r--ydb/core/blobstorage/nodewarden/node_warden_impl.cpp41
-rw-r--r--ydb/core/blobstorage/nodewarden/node_warden_impl.h22
-rw-r--r--ydb/core/blobstorage/nodewarden/node_warden_pdisk.cpp75
-rw-r--r--ydb/core/blobstorage/nodewarden/node_warden_pipe.cpp1
-rw-r--r--ydb/core/blobstorage/nodewarden/node_warden_vdisk.cpp8
-rw-r--r--ydb/core/blobstorage/pdisk/blobstorage_pdisk_actor.cpp80
-rw-r--r--ydb/core/blobstorage/pdisk/blobstorage_pdisk_impl_http.cpp21
-rw-r--r--ydb/core/blobstorage/pdisk/blobstorage_pdisk_ut.cpp16
-rw-r--r--ydb/core/blobstorage/pdisk/blobstorage_pdisk_ut_actions.cpp2
-rw-r--r--ydb/core/blobstorage/pdisk/mock/pdisk_mock.cpp9
-rw-r--r--ydb/core/blobstorage/ut_blobstorage/CMakeLists.darwin-x86_64.txt1
-rw-r--r--ydb/core/blobstorage/ut_blobstorage/CMakeLists.linux-aarch64.txt1
-rw-r--r--ydb/core/blobstorage/ut_blobstorage/CMakeLists.linux-x86_64.txt1
-rw-r--r--ydb/core/blobstorage/ut_blobstorage/CMakeLists.windows-x86_64.txt1
-rw-r--r--ydb/core/blobstorage/ut_blobstorage/restart_pdisk.cpp103
-rw-r--r--ydb/core/blobstorage/ut_blobstorage/ut_restart_pdisk/CMakeLists.darwin-x86_64.txt74
-rw-r--r--ydb/core/blobstorage/ut_blobstorage/ut_restart_pdisk/CMakeLists.linux-aarch64.txt77
-rw-r--r--ydb/core/blobstorage/ut_blobstorage/ut_restart_pdisk/CMakeLists.linux-x86_64.txt79
-rw-r--r--ydb/core/blobstorage/ut_blobstorage/ut_restart_pdisk/CMakeLists.txt17
-rw-r--r--ydb/core/blobstorage/ut_blobstorage/ut_restart_pdisk/CMakeLists.windows-x86_64.txt67
-rw-r--r--ydb/core/blobstorage/ut_blobstorage/ut_restart_pdisk/ya.make17
-rw-r--r--ydb/core/blobstorage/ut_blobstorage/ya.make1
-rw-r--r--ydb/core/mind/bscontroller/bsc.cpp3
-rw-r--r--ydb/core/mind/bscontroller/cmds_box.cpp22
-rw-r--r--ydb/core/mind/bscontroller/cmds_storage_pool.cpp1
-rw-r--r--ydb/core/mind/bscontroller/config.cpp17
-rw-r--r--ydb/core/mind/bscontroller/config.h1
-rw-r--r--ydb/core/mind/bscontroller/config_cmd.cpp1
-rw-r--r--ydb/core/mind/bscontroller/config_fit_pdisks.cpp2
-rw-r--r--ydb/core/mind/bscontroller/error.h6
-rw-r--r--ydb/core/mind/bscontroller/impl.h5
-rw-r--r--ydb/core/mind/bscontroller/load_everything.cpp2
-rw-r--r--ydb/core/mind/bscontroller/mood.h17
-rw-r--r--ydb/core/mind/bscontroller/node_report.cpp24
-rw-r--r--ydb/core/mind/bscontroller/register_node.cpp10
-rw-r--r--ydb/core/mind/bscontroller/scheme.h4
-rw-r--r--ydb/core/protos/blobstorage.proto10
-rw-r--r--ydb/core/protos/blobstorage_config.proto5
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;