aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrei Rykov <arykov@ydb.tech>2024-01-18 17:37:55 +0100
committerGitHub <noreply@github.com>2024-01-18 17:37:55 +0100
commit6b023b51dc732c23a89764fc42a44cecda011fe8 (patch)
treeba2b9c5ec120be55189dfa89ca698522c29481e3
parent859d03f38046e61338455c4d8594ee5fc77a8c74 (diff)
downloadydb-6b023b51dc732c23a89764fc42a44cecda011fe8.tar.gz
YDB-1060 viewer nodes handler add missing sort (#1134)
* degraded-sort * changed to int32
-rw-r--r--ydb/core/viewer/json_nodes.h18
1 files changed, 17 insertions, 1 deletions
diff --git a/ydb/core/viewer/json_nodes.h b/ydb/core/viewer/json_nodes.h
index d385fd67dbe..2db9b9a124a 100644
--- a/ydb/core/viewer/json_nodes.h
+++ b/ydb/core/viewer/json_nodes.h
@@ -76,6 +76,7 @@ class TJsonNodes : public TViewerPipeClient<TJsonNodes> {
Memory,
CPU,
LoadAverage,
+ Missing,
};
ESort Sort = ESort::NodeId;
bool ReverseSort = false;
@@ -168,6 +169,8 @@ public:
Sort = ESort::CPU;
} else if (sort == "LoadAverage") {
Sort = ESort::LoadAverage;
+ } else if (sort == "Missing") {
+ Sort = ESort::Missing;
}
}
}
@@ -668,6 +671,16 @@ public:
return 0;
}
+ static uint32 GetMissing(const NKikimrViewer::TNodeInfo& nodeInfo) {
+ uint32 missing = 0;
+ for (const auto& pDisk : nodeInfo.GetPDisks()) {
+ if (pDisk.state() != NKikimrBlobStorage::TPDiskState::Normal) {
+ missing++;
+ }
+ }
+ return missing;
+ }
+
void ReplyAndPassAway() {
NKikimrViewer::TNodesInfo result;
@@ -780,6 +793,9 @@ public:
case ESort::LoadAverage:
SortCollection(*result.MutableNodes(), [](const NKikimrViewer::TNodeInfo& node) { return GetLoadAverage(node.GetSystemState());}, ReverseSort);
break;
+ case ESort::Missing:
+ SortCollection(*result.MutableNodes(), [](const NKikimrViewer::TNodeInfo& node) { return GetMissing(node);}, ReverseSort);
+ break;
}
}
@@ -861,7 +877,7 @@ struct TJsonRequestParameters<TJsonNodes> {
{"name":"type","in":"query","description":"nodes type to get (static,dynamic,any)","required":false,"type":"string"},
{"name":"storage","in":"query","description":"return storage info","required":false,"type":"boolean"},
{"name":"tablets","in":"query","description":"return tablets info","required":false,"type":"boolean"},
- {"name":"sort","in":"query","description":"sort by (NodeId,Host,DC,Rack,Version,Uptime,Memory,CPU,LoadAverage)","required":false,"type":"string"},
+ {"name":"sort","in":"query","description":"sort by (NodeId,Host,DC,Rack,Version,Uptime,Memory,CPU,LoadAverage,Missing)","required":false,"type":"string"},
{"name":"offset","in":"query","description":"skip N nodes","required":false,"type":"integer"},
{"name":"limit","in":"query","description":"limit to N nodes","required":false,"type":"integer"},
{"name":"timeout","in":"query","description":"timeout in ms","required":false,"type":"integer"},