Skip to content

Commit ea73e30

Browse files
authored
intersect node filters for tabletinfo handler (#9850)
1 parent ad0cdee commit ea73e30

File tree

2 files changed

+22
-5
lines changed

2 files changed

+22
-5
lines changed

ydb/core/viewer/json_wb_req.h

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,23 @@ class TJsonWhiteboardRequest : public TWhiteboardRequest<TRequestEventType, TRes
3838

3939
void Bootstrap() override {
4040
const auto& params(Event->Get()->Request.GetParams());
41-
SplitIds(params.Get("node_id"), ',', TBase::RequestSettings.FilterNodeIds);
41+
std::vector<TNodeId> nodeIds;
42+
SplitIds(params.Get("node_id"), ',', nodeIds);
43+
if (!nodeIds.empty()) {
44+
if (TBase::RequestSettings.FilterNodeIds.empty()) {
45+
TBase::RequestSettings.FilterNodeIds = nodeIds;
46+
} else {
47+
std::sort(nodeIds.begin(), nodeIds.end());
48+
std::sort(TBase::RequestSettings.FilterNodeIds.begin(), TBase::RequestSettings.FilterNodeIds.end());
49+
std::vector<TNodeId> intersection;
50+
std::set_intersection(nodeIds.begin(), nodeIds.end(), TBase::RequestSettings.FilterNodeIds.begin(), TBase::RequestSettings.FilterNodeIds.end(), std::back_inserter(intersection));
51+
if (intersection.empty()) {
52+
TBase::RequestSettings.FilterNodeIds = {0};
53+
} else {
54+
TBase::RequestSettings.FilterNodeIds = intersection;
55+
}
56+
}
57+
}
4258
{
4359
TString merge = params.Get("merge");
4460
if (merge.empty() || merge == "1" || merge == "true") {

ydb/core/viewer/viewer_tabletinfo.h

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -82,12 +82,13 @@ class TJsonTabletInfo : public TJsonWhiteboardRequest<TEvWhiteboard::TEvTabletSt
8282
}
8383

8484
void Bootstrap() override {
85-
BLOG_TRACE("Bootstrap()");
85+
if (NeedToRedirect()) {
86+
return;
87+
}
8688
const auto& params(Event->Get()->Request.GetParams());
8789
TBase::RequestSettings.Timeout = FromStringWithDefault<ui32>(params.Get("timeout"), 10000);
88-
TString database = params.Get("database");
89-
if (database) {
90-
RegisterWithSameMailbox(CreateBoardLookupActor(MakeEndpointsBoardPath(database), TBase::SelfId(), EBoardLookupMode::Second));
90+
if (Database) {
91+
RegisterWithSameMailbox(CreateBoardLookupActor(MakeEndpointsBoardPath(Database), TBase::SelfId(), EBoardLookupMode::Second));
9192
Become(&TThis::StateRequestedLookup, TDuration::MilliSeconds(TBase::RequestSettings.Timeout), new TEvents::TEvWakeup());
9293
return;
9394
}

0 commit comments

Comments
 (0)