Skip to content

Commit cebe29d

Browse files
authored
add node name filter, improve filter behavior (#10585)
1 parent 5f23c89 commit cebe29d

File tree

2 files changed

+46
-23
lines changed

2 files changed

+46
-23
lines changed

ydb/core/viewer/storage_groups.h

Lines changed: 20 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1042,20 +1042,29 @@ class TStorageGroups : public TViewerPipeClient {
10421042
With = EWith::Everything;
10431043
GroupsByGroupId.clear();
10441044
}
1045-
if (!Filter.empty() && FieldsAvailable.test(+EGroupFields::PoolName) && FieldsAvailable.test(+EGroupFields::GroupId)) {
1046-
TVector<TString> filterWords = SplitString(Filter, " ");
1047-
TGroupView groupView;
1048-
for (TGroup* group : GroupView) {
1049-
for (const TString& word : filterWords) {
1050-
if (group->PoolName.Contains(word) || ::ToString(group->GroupId).Contains(word)) {
1051-
groupView.push_back(group);
1052-
break;
1045+
if (!Filter.empty()) {
1046+
bool allFieldsPresent =
1047+
(!FieldsRequired.test(+EGroupFields::GroupId) || FieldsAvailable.test(+EGroupFields::GroupId)) &&
1048+
(!FieldsRequired.test(+EGroupFields::PoolName) || FieldsAvailable.test(+EGroupFields::PoolName));
1049+
if (allFieldsPresent) {
1050+
TVector<TString> filterWords = SplitString(Filter, " ");
1051+
TGroupView groupView;
1052+
for (TGroup* group : GroupView) {
1053+
for (const TString& word : filterWords) {
1054+
if (FieldsRequired.test(+EGroupFields::GroupId) && ::ToString(group->GroupId).Contains(word)) {
1055+
groupView.push_back(group);
1056+
break;
1057+
}
1058+
if (FieldsRequired.test(+EGroupFields::PoolName) && group->PoolName.Contains(word)) {
1059+
groupView.push_back(group);
1060+
break;
1061+
}
10531062
}
10541063
}
1064+
GroupView.swap(groupView);
1065+
Filter.clear();
1066+
GroupsByGroupId.clear();
10551067
}
1056-
GroupView.swap(groupView);
1057-
Filter.clear();
1058-
GroupsByGroupId.clear();
10591068
}
10601069
if (!FilterGroup.empty() && FieldsAvailable.test(+FilterGroupBy)) {
10611070
TGroupView groupView;

ydb/core/viewer/viewer_nodes.h

Lines changed: 26 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -620,7 +620,7 @@ class TJsonNodes : public TViewerPipeClient {
620620
ENodeFields result = ENodeFields::COUNT;
621621
if (field == "NodeId" || field == "Id") {
622622
result = ENodeFields::NodeId;
623-
} else if (field == "Host") {
623+
} else if (field == "Host" || field == "HostName") {
624624
result = ENodeFields::HostName;
625625
} else if (field == "NodeName") {
626626
result = ENodeFields::NodeName;
@@ -1023,20 +1023,34 @@ class TJsonNodes : public TViewerPipeClient {
10231023
UptimeSeconds = 0;
10241024
InvalidateNodes();
10251025
}
1026-
if (!Filter.empty() && FieldsAvailable.test(+ENodeFields::NodeInfo)) {
1027-
TVector<TString> filterWords = SplitString(Filter, " ");
1028-
TNodeView nodeView;
1029-
for (TNode* node : NodeView) {
1030-
for (const TString& word : filterWords) {
1031-
if (node->GetHostName().Contains(word) || ::ToString(node->GetNodeId()).Contains(word)) {
1032-
nodeView.push_back(node);
1033-
break;
1026+
if (!Filter.empty()) {
1027+
bool allFieldsPresent =
1028+
(!FieldsRequired.test(+ENodeFields::NodeId) || FieldsAvailable.test(+ENodeFields::NodeId)) &&
1029+
(!FieldsRequired.test(+ENodeFields::HostName) || FieldsAvailable.test(+ENodeFields::HostName)) &&
1030+
(!FieldsRequired.test(+ENodeFields::NodeName) || FieldsAvailable.test(+ENodeFields::NodeName));
1031+
if (allFieldsPresent) {
1032+
TVector<TString> filterWords = SplitString(Filter, " ");
1033+
TNodeView nodeView;
1034+
for (TNode* node : NodeView) {
1035+
for (const TString& word : filterWords) {
1036+
if (FieldsRequired.test(+ENodeFields::NodeId) && ::ToString(node->GetNodeId()).Contains(word)) {
1037+
nodeView.push_back(node);
1038+
break;
1039+
}
1040+
if (FieldsRequired.test(+ENodeFields::HostName) && node->GetHostName().Contains(word)) {
1041+
nodeView.push_back(node);
1042+
break;
1043+
}
1044+
if (FieldsRequired.test(+ENodeFields::NodeName) && node->GetNodeName().Contains(word)) {
1045+
nodeView.push_back(node);
1046+
break;
1047+
}
10341048
}
10351049
}
1050+
NodeView.swap(nodeView);
1051+
Filter.clear();
1052+
InvalidateNodes();
10361053
}
1037-
NodeView.swap(nodeView);
1038-
Filter.clear();
1039-
InvalidateNodes();
10401054
}
10411055
if (!FilterGroup.empty() && FieldsAvailable.test(+FilterGroupBy)) {
10421056
TNodeView nodeView;

0 commit comments

Comments
 (0)