@@ -97,6 +97,7 @@ class TJsonNodes : public TViewerPipeClient {
97
97
std::unordered_map<TNodeId, TRequestResponse<TEvWhiteboard::TEvPDiskStateResponse>> PDiskStateResponse;
98
98
std::unordered_map<TNodeId, TRequestResponse<TEvWhiteboard::TEvTabletStateResponse>> TabletStateResponse;
99
99
std::unordered_map<TNodeId, TRequestResponse<TEvWhiteboard::TEvNodeStateResponse>> PeersStateResponse;
100
+ std::unordered_map<TNodeId, std::unordered_set<TNodeId>> SystemViewerRequest;
100
101
std::unordered_map<TNodeId, TRequestResponse<TEvViewer::TEvViewerResponse>> SystemViewerResponse;
101
102
std::unordered_map<TNodeId, TRequestResponse<TEvViewer::TEvViewerResponse>> VDiskViewerResponse;
102
103
std::unordered_map<TNodeId, TRequestResponse<TEvViewer::TEvViewerResponse>> PDiskViewerResponse;
@@ -349,6 +350,7 @@ class TJsonNodes : public TViewerPipeClient {
349
350
SystemState.SetDisconnectTime (disconnectTime.MilliSeconds ());
350
351
}
351
352
}
353
+ CalcUptimeSeconds (TInstant::Now ());
352
354
}
353
355
354
356
void RemapDisks () {
@@ -2085,9 +2087,12 @@ class TJsonNodes : public TViewerPipeClient {
2085
2087
auto viewerRequest = std::make_unique<TEvViewer::TEvViewerRequest>();
2086
2088
InitWhiteboardRequest (viewerRequest->Record .MutableSystemRequest ());
2087
2089
viewerRequest->Record .SetTimeout (Timeout / 2 );
2090
+ std::unordered_set<TNodeId> nodeIds;
2088
2091
for (const TNode* node : batch.NodesToAskAbout ) {
2092
+ nodeIds.insert (node->GetNodeId ());
2089
2093
viewerRequest->Record .MutableLocation ()->AddNodeId (node->GetNodeId ());
2090
2094
}
2095
+ SystemViewerRequest[nodeId] = std::move (nodeIds);
2091
2096
SystemViewerResponse.emplace (nodeId, MakeViewerRequest (nodeId, viewerRequest.release ()));
2092
2097
NodeBatches.emplace (nodeId, batch);
2093
2098
++WhiteboardStateRequestsInFlight;
@@ -2280,10 +2285,7 @@ class TJsonNodes : public TViewerPipeClient {
2280
2285
for (const auto & [responseNodeId, response] : SystemViewerResponse) {
2281
2286
if (response.IsOk ()) {
2282
2287
const auto & systemResponse (response.Get ()->Record .GetSystemResponse ());
2283
- std::unordered_set<TNodeId> nodesWithoutData;
2284
- for (auto nodeId : response.Get ()->Record .GetLocationResponded ().GetNodeId ()) {
2285
- nodesWithoutData.insert (nodeId);
2286
- }
2288
+ std::unordered_set<TNodeId> nodesWithoutData = std::move (SystemViewerRequest[responseNodeId]);
2287
2289
for (const auto & systemInfo : systemResponse.GetSystemStateInfo ()) {
2288
2290
TNodeId nodeId = systemInfo.GetNodeId ();
2289
2291
TNode* node = FindNode (nodeId);
@@ -2785,7 +2787,6 @@ class TJsonNodes : public TViewerPipeClient {
2785
2787
if (FieldsRequired.test (+ENodeFields::PDisks) || FieldsRequired.test (+ENodeFields::VDisks)) {
2786
2788
node->RemapDisks ();
2787
2789
}
2788
- node->CalcUptimeSeconds (TInstant::Now ());
2789
2790
}
2790
2791
TString error (" NodeDisconnected" );
2791
2792
{
0 commit comments