Skip to content

Commit 1776442

Browse files
authored
add MemoryDetailed field to viewer/nodes handler (#10694)
1 parent e45fe26 commit 1776442

File tree

2 files changed

+29
-2
lines changed

2 files changed

+29
-2
lines changed

ydb/core/viewer/json_handlers_viewer.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -244,7 +244,7 @@ void InitViewerHealthCheckJsonHandler(TJsonHandlers& handlers) {
244244
}
245245

246246
void InitViewerNodesJsonHandler(TJsonHandlers& handlers) {
247-
handlers.AddHandler("/viewer/nodes", new TJsonHandler<TJsonNodes>(TJsonNodes::GetSwagger()), 9);
247+
handlers.AddHandler("/viewer/nodes", new TJsonHandler<TJsonNodes>(TJsonNodes::GetSwagger()), 10);
248248
}
249249

250250
void InitViewerACLJsonHandler(TJsonHandlers &jsonHandlers) {

ydb/core/viewer/viewer_nodes.h

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ enum class ENodeFields : ui8 {
2828
Version,
2929
Uptime,
3030
Memory,
31+
MemoryDetailed,
3132
CPU,
3233
LoadAverage,
3334
Missing,
@@ -586,6 +587,7 @@ class TJsonNodes : public TViewerPipeClient {
586587
{ ENodeFields::LoadAverage, TFieldsType().set(+ENodeFields::SystemState) },
587588
{ ENodeFields::Database, TFieldsType().set(+ENodeFields::SystemState) },
588589
{ ENodeFields::Missing, TFieldsType().set(+ENodeFields::PDisks) },
590+
{ ENodeFields::MemoryDetailed, TFieldsType().set(+ENodeFields::SystemState) },
589591
};
590592

591593
bool FieldsNeeded(TFieldsType fields) const {
@@ -634,6 +636,8 @@ class TJsonNodes : public TViewerPipeClient {
634636
result = ENodeFields::Uptime;
635637
} else if (field == "Memory") {
636638
result = ENodeFields::Memory;
639+
} else if (field == "MemoryDetailed") {
640+
result = ENodeFields::MemoryDetailed;
637641
} else if (field == "CPU") {
638642
result = ENodeFields::CPU;
639643
} else if (field == "LoadAverage") {
@@ -1116,6 +1120,7 @@ class TJsonNodes : public TViewerPipeClient {
11161120
case ENodeFields::SubDomainKey:
11171121
case ENodeFields::COUNT:
11181122
case ENodeFields::Memory:
1123+
case ENodeFields::MemoryDetailed:
11191124
case ENodeFields::CPU:
11201125
case ENodeFields::LoadAverage:
11211126
case ENodeFields::DisconnectTime:
@@ -1157,6 +1162,7 @@ class TJsonNodes : public TViewerPipeClient {
11571162
NeedSort = false;
11581163
break;
11591164
case ENodeFields::Memory:
1165+
case ENodeFields::MemoryDetailed:
11601166
SortCollection(NodeView, [](const TNode* node) { return node->SystemState.GetMemoryUsed(); }, ReverseSort);
11611167
NeedSort = false;
11621168
break;
@@ -1709,6 +1715,20 @@ class TJsonNodes : public TViewerPipeClient {
17091715
}
17101716
}
17111717

1718+
template<>
1719+
void InitWhiteboardRequest(NKikimrWhiteboard::TEvSystemStateRequest* request) {
1720+
if (AllWhiteboardFields) {
1721+
request->AddFieldsRequired(-1);
1722+
} else {
1723+
for (auto field : {1, 2, 4, 5, 6, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 30, 31, 36, 37}) { // node_whiteboard.proto
1724+
request->AddFieldsRequired(field);
1725+
}
1726+
if (FieldsRequired.test(+ENodeFields::MemoryDetailed)) {
1727+
request->AddFieldsRequired(38);
1728+
}
1729+
}
1730+
}
1731+
17121732
void SendWhiteboardSystemAndTabletsBatch(TNodeBatch& batch) {
17131733
TNodeId nodeId = OffloadMerge ? batch.ChooseNodeId() : 0;
17141734
if (batch.HasStaticNodes && (FieldsNeeded(FieldsVDisks) || FieldsNeeded(FieldsPDisks))) {
@@ -1798,6 +1818,7 @@ class TJsonNodes : public TViewerPipeClient {
17981818
void ProcessWhiteboard() {
17991819
if (FieldsNeeded(FieldsSystemState)) {
18001820
TInstant now = TInstant::Now();
1821+
bool hasMemoryDetailed = false;
18011822
std::unordered_set<TNodeId> removeNodes;
18021823
for (const auto& [responseNodeId, response] : SystemViewerResponse) {
18031824
if (response.IsOk()) {
@@ -1818,6 +1839,7 @@ class TJsonNodes : public TViewerPipeClient {
18181839
}
18191840
}
18201841
}
1842+
hasMemoryDetailed |= systemInfo.HasMemoryStats();
18211843
}
18221844
for (auto nodeId : nodesWithoutData) {
18231845
TNode* node = FindNode(nodeId);
@@ -1845,6 +1867,7 @@ class TJsonNodes : public TViewerPipeClient {
18451867
}
18461868
}
18471869
}
1870+
hasMemoryDetailed |= systemState.GetSystemStateInfo(0).HasMemoryStats();
18481871
}
18491872
} else {
18501873
TNode* node = FindNode(nodeId);
@@ -1860,6 +1883,9 @@ class TJsonNodes : public TViewerPipeClient {
18601883
}
18611884
FieldsAvailable |= FieldsSystemState;
18621885
FieldsAvailable.set(+ENodeFields::Database);
1886+
if (hasMemoryDetailed) {
1887+
FieldsAvailable.set(+ENodeFields::MemoryDetailed);
1888+
}
18631889
}
18641890
if (FieldsNeeded(FieldsTablets)) {
18651891
for (auto& [nodeId, response] : TabletViewerResponse) {
@@ -2477,7 +2503,7 @@ class TJsonNodes : public TViewerPipeClient {
24772503
* `Rack`
24782504
* `Version`
24792505
* `Uptime`
2480-
* `Memory`
2506+
* `Memory` / `MemoryDetailed`
24812507
* `CPU`
24822508
* `LoadAverage`
24832509
* `Missing`
@@ -2538,6 +2564,7 @@ class TJsonNodes : public TViewerPipeClient {
25382564
* `Version`
25392565
* `Uptime`
25402566
* `Memory`
2567+
* `MemoryDetailed`
25412568
* `CPU`
25422569
* `LoadAverage`
25432570
* `Missing`

0 commit comments

Comments
 (0)