@@ -620,7 +620,7 @@ class TJsonNodes : public TViewerPipeClient {
620
620
ENodeFields result = ENodeFields::COUNT;
621
621
if (field == " NodeId" || field == " Id" ) {
622
622
result = ENodeFields::NodeId;
623
- } else if (field == " Host" ) {
623
+ } else if (field == " Host" || field == " HostName " ) {
624
624
result = ENodeFields::HostName;
625
625
} else if (field == " NodeName" ) {
626
626
result = ENodeFields::NodeName;
@@ -1023,20 +1023,34 @@ class TJsonNodes : public TViewerPipeClient {
1023
1023
UptimeSeconds = 0 ;
1024
1024
InvalidateNodes ();
1025
1025
}
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
+ }
1034
1048
}
1035
1049
}
1050
+ NodeView.swap (nodeView);
1051
+ Filter.clear ();
1052
+ InvalidateNodes ();
1036
1053
}
1037
- NodeView.swap (nodeView);
1038
- Filter.clear ();
1039
- InvalidateNodes ();
1040
1054
}
1041
1055
if (!FilterGroup.empty () && FieldsAvailable.test (+FilterGroupBy)) {
1042
1056
TNodeView nodeView;
0 commit comments