@@ -84,6 +84,19 @@ class TJsonTabletInfo : public TJsonWhiteboardRequest<TEvWhiteboard::TEvTabletSt
84
84
void Bootstrap () override {
85
85
BLOG_TRACE (" Bootstrap()" );
86
86
const auto & params (Event->Get ()->Request .GetParams ());
87
+ 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));
91
+ Become (&TThis::StateRequestedLookup, TDuration::MilliSeconds (TBase::RequestSettings.Timeout ), new TEvents::TEvWakeup ());
92
+ return ;
93
+ }
94
+ CheckPath ();
95
+ }
96
+
97
+ void CheckPath () {
98
+ BLOG_TRACE (" CheckPath()" );
99
+ const auto & params (Event->Get ()->Request .GetParams ());
87
100
ReplyWithDeadTabletsInfo = params.Has (" path" );
88
101
if (params.Has (" path" )) {
89
102
TBase::RequestSettings.Timeout = FromStringWithDefault<ui32>(params.Get (" timeout" ), 10000 );
@@ -94,23 +107,31 @@ class TJsonTabletInfo : public TJsonWhiteboardRequest<TEvWhiteboard::TEvTabletSt
94
107
}
95
108
NKikimrSchemeOp::TDescribePath* record = request->Record .MutableDescribePath ();
96
109
record->SetPath (params.Get (" path" ));
97
-
98
- TActorId txproxy = MakeTxProxyID ();
99
- TBase::Send (txproxy, request.Release ());
100
- UnsafeBecome (&TThis::StateRequestedDescribe, TDuration::MilliSeconds (TBase::RequestSettings.Timeout ), new TEvents::TEvWakeup ());
110
+ TBase::Send (MakeTxProxyID (), request.Release ());
111
+ Become (&TThis::StateRequestedDescribe, TDuration::MilliSeconds (TBase::RequestSettings.Timeout ), new TEvents::TEvWakeup ());
101
112
} else {
102
113
TBase::Bootstrap ();
103
- if (!TBase::RequestSettings.FilterFields .empty ()) {
104
- if (IsMatchesWildcard (TBase::RequestSettings.FilterFields , " (TabletId=*)" )) {
105
- TString strTabletId (TBase::RequestSettings.FilterFields .substr (10 , TBase::RequestSettings.FilterFields .size () - 11 ));
106
- TTabletId uiTabletId (FromStringWithDefault<TTabletId>(strTabletId, {}));
107
- if (uiTabletId) {
108
- Tablets[uiTabletId] = NKikimrTabletBase::TTabletTypes::Unknown;
109
- Request->Record .AddFilterTabletId (uiTabletId);
110
- }
114
+ }
115
+ }
116
+
117
+ THolder<TEvWhiteboard::TEvTabletStateRequest> BuildRequest () override {
118
+ THolder<TEvWhiteboard::TEvTabletStateRequest> request = TBase::BuildRequest ();
119
+ if (!TBase::RequestSettings.FilterFields .empty ()) {
120
+ if (IsMatchesWildcard (TBase::RequestSettings.FilterFields , " (TabletId=*)" )) {
121
+ TString strTabletId (TBase::RequestSettings.FilterFields .substr (10 , TBase::RequestSettings.FilterFields .size () - 11 ));
122
+ TTabletId uiTabletId (FromStringWithDefault<TTabletId>(strTabletId, {}));
123
+ if (uiTabletId) {
124
+ Tablets[uiTabletId] = NKikimrTabletBase::TTabletTypes::Unknown;
125
+ Request->Record .AddFilterTabletId (uiTabletId);
111
126
}
112
127
}
113
128
}
129
+ return request;
130
+ }
131
+
132
+ void Handle (TEvStateStorage::TEvBoardInfo::TPtr& ev) {
133
+ TBase::RequestSettings.FilterNodeIds = TBase::GetNodesFromBoardReply (ev);
134
+ CheckPath ();
114
135
}
115
136
116
137
TString GetColumnValue (const TCell& cell, const NKikimrSchemeOp::TColumnDescription& type) {
@@ -343,6 +364,13 @@ class TJsonTabletInfo : public TJsonWhiteboardRequest<TEvWhiteboard::TEvTabletSt
343
364
TBase::FilterResponse (response);
344
365
}
345
366
367
+ STATEFN (StateRequestedLookup) {
368
+ switch (ev->GetTypeRewrite ()) {
369
+ hFunc (TEvStateStorage::TEvBoardInfo, Handle );
370
+ cFunc (TEvents::TSystem::Wakeup, HandleTimeout);
371
+ }
372
+ }
373
+
346
374
STATEFN (StateRequestedDescribe) {
347
375
switch (ev->GetTypeRewrite ()) {
348
376
hFunc (NSchemeShard::TEvSchemeShard::TEvDescribeSchemeResult, Handle );
0 commit comments