aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexey Efimov <xeno@ydb.tech>2024-09-22 07:21:53 +0200
committerGitHub <noreply@github.com>2024-09-22 07:21:53 +0200
commit561ee3470320b2fd6e920664fe8196fb23ed5fce (patch)
treea8e245691b06266bdf77160079972e0931271c16
parenteec992f3c98e5c2a213a3f0ee09f47db6027df14 (diff)
downloadydb-561ee3470320b2fd6e920664fe8196fb23ed5fce.tar.gz
fix maximum pdisks per node calculation (#9563)
-rw-r--r--ydb/core/viewer/json_handlers_viewer.cpp2
-rw-r--r--ydb/core/viewer/json_pipe_req.h2
-rw-r--r--ydb/core/viewer/viewer_nodes.h27
3 files changed, 26 insertions, 5 deletions
diff --git a/ydb/core/viewer/json_handlers_viewer.cpp b/ydb/core/viewer/json_handlers_viewer.cpp
index 8ecd7cc923..16bbfe1a4b 100644
--- a/ydb/core/viewer/json_handlers_viewer.cpp
+++ b/ydb/core/viewer/json_handlers_viewer.cpp
@@ -243,7 +243,7 @@ void InitViewerHealthCheckJsonHandler(TJsonHandlers& handlers) {
}
void InitViewerNodesJsonHandler(TJsonHandlers& handlers) {
- handlers.AddHandler("/viewer/nodes", new TJsonHandler<TJsonNodes>(TJsonNodes::GetSwagger()), 4);
+ handlers.AddHandler("/viewer/nodes", new TJsonHandler<TJsonNodes>(TJsonNodes::GetSwagger()), 5);
}
void InitViewerACLJsonHandler(TJsonHandlers &jsonHandlers) {
diff --git a/ydb/core/viewer/json_pipe_req.h b/ydb/core/viewer/json_pipe_req.h
index f323d371db..3871cce45d 100644
--- a/ydb/core/viewer/json_pipe_req.h
+++ b/ydb/core/viewer/json_pipe_req.h
@@ -85,8 +85,8 @@ protected:
}
if (!IsDone()) {
Span.EndOk();
+ Response = std::move(response);
}
- Response = std::move(response);
}
void Set(TAutoPtr<TEventHandle<T>>&& response) {
diff --git a/ydb/core/viewer/viewer_nodes.h b/ydb/core/viewer/viewer_nodes.h
index d0cb32607e..358aa53bcc 100644
--- a/ydb/core/viewer/viewer_nodes.h
+++ b/ydb/core/viewer/viewer_nodes.h
@@ -769,6 +769,16 @@ public:
PDisksResponse = RequestBSControllerPDisks();
}
}
+ if (FieldsRequired.test(+ENodeFields::PDisks)) {
+ if (!PDisksResponse) {
+ PDisksResponse = RequestBSControllerPDisks();
+ }
+ }
+ if (FieldsRequired.test(+ENodeFields::VDisks)) {
+ if (!VSlotsResponse) {
+ VSlotsResponse = RequestBSControllerVSlots();
+ }
+ }
if (FieldsNeeded(FieldsHiveNodeStat) && !FilterDatabase && !FilterPath) {
TTabletId rootHiveId = AppData()->DomainsInfo->GetHive();
HivesToAsk.push_back(rootHiveId);
@@ -2006,18 +2016,22 @@ public:
bool result = false;
if (StoragePoolsResponse && StoragePoolsResponse->Error(error)) {
ProcessResponses();
+ RequestDone();
result = true;
}
if (GroupsResponse && GroupsResponse->Error(error)) {
ProcessResponses();
+ RequestDone();
result = true;
}
if (VSlotsResponse && VSlotsResponse->Error(error)) {
ProcessResponses();
+ RequestDone();
result = true;
}
if (PDisksResponse && PDisksResponse->Error(error)) {
ProcessResponses();
+ RequestDone();
result = true;
}
return result;
@@ -2032,6 +2046,7 @@ public:
if (it->second.Error(error)) {
AddProblem("hive-error");
ProcessResponses();
+ RequestDone();
}
}
if (ev->Get()->TabletId == GetBSControllerId()) {
@@ -2039,8 +2054,8 @@ public:
AddProblem("bsc-error");
}
}
+ FailPipeConnect(ev->Get()->TabletId);
}
- TBase::Handle(ev); // all RequestDone() are handled by base handler
}
void HandleTimeout(TEvents::TEvWakeup::TPtr& ev) {
@@ -2049,28 +2064,34 @@ public:
if (ev->Get()->Tag == TimeoutTablets) {
if (NodesInfoResponse && NodesInfoResponse->Error(error)) {
ProcessResponses();
+ RequestDone();
}
if (NodeStateResponse && NodeStateResponse->Error(error)) {
ProcessResponses();
+ RequestDone();
}
if (DatabaseNavigateResponse && DatabaseNavigateResponse->Error(error)) {
ProcessResponses();
+ RequestDone();
}
if (ResourceNavigateResponse && ResourceNavigateResponse->Error(error)) {
ProcessResponses();
+ RequestDone();
}
if (PathNavigateResponse && PathNavigateResponse->Error(error)) {
ProcessResponses();
+ RequestDone();
}
if (OnBscError(error)) {
AddProblem("bsc-timeout");
+ FailPipeConnect(GetBSControllerId());
}
- RequestDone(FailPipeConnect(GetBSControllerId()));
for (auto& [hiveId, response] : HiveNodeStats) {
if (response.Error(error)) {
AddProblem("hive-timeout");
ProcessResponses();
- RequestDone(FailPipeConnect(hiveId));
+ RequestDone();
+ FailPipeConnect(hiveId);
}
}
}