aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexey Efimov <xeno@ydb.tech>2024-09-27 15:21:53 +0200
committerGitHub <noreply@github.com>2024-09-27 13:21:53 +0000
commitea73e307f211bb17dd36610c442cbffb0381e76e (patch)
treebe7438556fd904298d7d7718edf9eadced5b5217
parentad0cdee89414613673d22c14c52497f517c3bd5b (diff)
downloadydb-ea73e307f211bb17dd36610c442cbffb0381e76e.tar.gz
intersect node filters for tabletinfo handler (#9850)
-rw-r--r--ydb/core/viewer/json_wb_req.h18
-rw-r--r--ydb/core/viewer/viewer_tabletinfo.h9
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;
}