diff options
author | Alexey Efimov <xeno@ydb.tech> | 2024-09-27 15:21:53 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-09-27 13:21:53 +0000 |
commit | ea73e307f211bb17dd36610c442cbffb0381e76e (patch) | |
tree | be7438556fd904298d7d7718edf9eadced5b5217 | |
parent | ad0cdee89414613673d22c14c52497f517c3bd5b (diff) | |
download | ydb-ea73e307f211bb17dd36610c442cbffb0381e76e.tar.gz |
intersect node filters for tabletinfo handler (#9850)
-rw-r--r-- | ydb/core/viewer/json_wb_req.h | 18 | ||||
-rw-r--r-- | ydb/core/viewer/viewer_tabletinfo.h | 9 |
2 files changed, 22 insertions, 5 deletions
diff --git a/ydb/core/viewer/json_wb_req.h b/ydb/core/viewer/json_wb_req.h index 31a984ac6b2..f5e0cd10333 100644 --- a/ydb/core/viewer/json_wb_req.h +++ b/ydb/core/viewer/json_wb_req.h @@ -38,7 +38,23 @@ public: void Bootstrap() override { const auto& params(Event->Get()->Request.GetParams()); - SplitIds(params.Get("node_id"), ',', TBase::RequestSettings.FilterNodeIds); + std::vector<TNodeId> nodeIds; + SplitIds(params.Get("node_id"), ',', nodeIds); + if (!nodeIds.empty()) { + if (TBase::RequestSettings.FilterNodeIds.empty()) { + TBase::RequestSettings.FilterNodeIds = nodeIds; + } else { + std::sort(nodeIds.begin(), nodeIds.end()); + std::sort(TBase::RequestSettings.FilterNodeIds.begin(), TBase::RequestSettings.FilterNodeIds.end()); + std::vector<TNodeId> intersection; + std::set_intersection(nodeIds.begin(), nodeIds.end(), TBase::RequestSettings.FilterNodeIds.begin(), TBase::RequestSettings.FilterNodeIds.end(), std::back_inserter(intersection)); + if (intersection.empty()) { + TBase::RequestSettings.FilterNodeIds = {0}; + } else { + TBase::RequestSettings.FilterNodeIds = intersection; + } + } + } { TString merge = params.Get("merge"); if (merge.empty() || merge == "1" || merge == "true") { diff --git a/ydb/core/viewer/viewer_tabletinfo.h b/ydb/core/viewer/viewer_tabletinfo.h index dd73e00b634..57f5b71e466 100644 --- a/ydb/core/viewer/viewer_tabletinfo.h +++ b/ydb/core/viewer/viewer_tabletinfo.h @@ -82,12 +82,13 @@ public: } void Bootstrap() override { - BLOG_TRACE("Bootstrap()"); + if (NeedToRedirect()) { + return; + } const auto& params(Event->Get()->Request.GetParams()); TBase::RequestSettings.Timeout = FromStringWithDefault<ui32>(params.Get("timeout"), 10000); - TString database = params.Get("database"); - if (database) { - RegisterWithSameMailbox(CreateBoardLookupActor(MakeEndpointsBoardPath(database), TBase::SelfId(), EBoardLookupMode::Second)); + if (Database) { + RegisterWithSameMailbox(CreateBoardLookupActor(MakeEndpointsBoardPath(Database), TBase::SelfId(), EBoardLookupMode::Second)); Become(&TThis::StateRequestedLookup, TDuration::MilliSeconds(TBase::RequestSettings.Timeout), new TEvents::TEvWakeup()); return; } |