Skip to content

Commit 09cb98d

Browse files
added RequestDone
1 parent 5ced356 commit 09cb98d

File tree

3 files changed

+25
-28
lines changed

3 files changed

+25
-28
lines changed

ydb/core/viewer/json_pipe_req.cpp

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -573,6 +573,9 @@ TViewerPipeClient::TRequestResponse<TEvTxProxySchemeCache::TEvNavigateKeySetResu
573573
void TViewerPipeClient::RequestTxProxyDescribe(const TString& path) {
574574
THolder<TEvTxUserProxy::TEvNavigate> request(new TEvTxUserProxy::TEvNavigate());
575575
request->Record.MutableDescribePath()->SetPath(path);
576+
if (!Event->Get()->UserToken.empty()) {
577+
request->Record.SetUserToken(Event->Get()->UserToken);
578+
}
576579
SendRequest(MakeTxProxyID(), request.Release());
577580
}
578581

@@ -748,12 +751,6 @@ void TViewerPipeClient::RequestDone(ui32 requests) {
748751
}
749752
}
750753

751-
void TViewerPipeClient::ResetAndBootstrap() {
752-
Requests = 0;
753-
DelayedRequests.clear();
754-
Bootstrap();
755-
}
756-
757754
void TViewerPipeClient::Handle(TEvTabletPipe::TEvClientConnected::TPtr& ev) {
758755
if (ev->Get()->Status != NKikimrProto::OK) {
759756
ui32 requests = FailPipeConnect(ev->Get()->TabletId);
@@ -769,13 +766,15 @@ void TViewerPipeClient::HandleResolveResource(TEvTxProxySchemeCache::TEvNavigate
769766
SharedDatabase = CanonizePath(entry.Path);
770767
if (SharedDatabase == AppData()->TenantName) {
771768
Direct = true;
772-
return ResetAndBootstrap(); // retry bootstrap without redirect this time
769+
Bootstrap(); // retry bootstrap without redirect this time
770+
} else {
771+
DatabaseBoardInfoResponse = MakeRequestStateStorageEndpointsLookup(SharedDatabase);
773772
}
774-
DatabaseBoardInfoResponse = MakeRequestStateStorageEndpointsLookup(SharedDatabase);
775773
} else {
776-
ReplyAndPassAway(GetHTTPBADREQUEST("text/plain", "Failed to resolve database - shared database not found"));
774+
return ReplyAndPassAway(GetHTTPBADREQUEST("text/plain", "Failed to resolve database - shared database not found"));
777775
}
778776
}
777+
RequestDone();
779778
}
780779

781780
void TViewerPipeClient::HandleResolveDatabase(TEvTxProxySchemeCache::TEvNavigateKeySetResult::TPtr& ev) {
@@ -786,25 +785,27 @@ void TViewerPipeClient::HandleResolveDatabase(TEvTxProxySchemeCache::TEvNavigate
786785
if (entry.DomainInfo && entry.DomainInfo->ResourcesDomainKey && entry.DomainInfo->DomainKey != entry.DomainInfo->ResourcesDomainKey) {
787786
ResourceNavigateResponse = MakeRequestSchemeCacheNavigate(TPathId(entry.DomainInfo->ResourcesDomainKey));
788787
Become(&TViewerPipeClient::StateResolveResource);
789-
return;
788+
} else {
789+
DatabaseBoardInfoResponse = MakeRequestStateStorageEndpointsLookup(CanonizePath(entry.Path));
790790
}
791-
DatabaseBoardInfoResponse = MakeRequestStateStorageEndpointsLookup(CanonizePath(entry.Path));
792791
} else {
793-
ReplyAndPassAway(GetHTTPBADREQUEST("text/plain", "Failed to resolve database - not found"));
792+
return ReplyAndPassAway(GetHTTPBADREQUEST("text/plain", "Failed to resolve database - not found"));
794793
}
795794
}
795+
RequestDone();
796796
}
797797

798798
void TViewerPipeClient::HandleResolve(TEvStateStorage::TEvBoardInfo::TPtr& ev) {
799799
if (DatabaseBoardInfoResponse) {
800800
DatabaseBoardInfoResponse->Set(std::move(ev));
801801
if (DatabaseBoardInfoResponse->IsOk()) {
802-
ReplyAndPassAway(MakeForward(GetNodesFromBoardReply(DatabaseBoardInfoResponse->GetRef())));
802+
return ReplyAndPassAway(MakeForward(GetNodesFromBoardReply(DatabaseBoardInfoResponse->GetRef())));
803803
} else {
804804
Direct = true;
805-
ResetAndBootstrap(); // retry bootstrap without redirect this time
805+
Bootstrap(); // retry bootstrap without redirect this time
806806
}
807807
}
808+
RequestDone();
808809
}
809810

810811
void TViewerPipeClient::HandleTimeout() {

ydb/core/viewer/json_pipe_req.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -303,7 +303,6 @@ class TViewerPipeClient : public TActorBootstrapped<TViewerPipeClient> {
303303
TString MakeForward(const std::vector<ui32>& nodes);
304304

305305
void RequestDone(ui32 requests = 1);
306-
void ResetAndBootstrap();
307306
void AddEvent(const TString& name);
308307
void Handle(TEvTabletPipe::TEvClientConnected::TPtr& ev);
309308
void HandleResolveDatabase(TEvTxProxySchemeCache::TEvNavigateKeySetResult::TPtr& ev);

ydb/core/viewer/viewer_tabletinfo.h

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -88,8 +88,11 @@ class TJsonTabletInfo : public TJsonWhiteboardRequest<TEvWhiteboard::TEvTabletSt
8888
}
8989
const auto& params(Event->Get()->Request.GetParams());
9090
TBase::RequestSettings.Timeout = FromStringWithDefault<ui32>(params.Get("timeout"), 10000);
91-
if (Database) {
92-
RegisterWithSameMailbox(CreateBoardLookupActor(MakeEndpointsBoardPath(Database), TBase::SelfId(), EBoardLookupMode::Second));
91+
92+
if (DatabaseBoardInfoResponse && DatabaseBoardInfoResponse->IsOk()) {
93+
TBase::RequestSettings.FilterNodeIds = TBase::GetNodesFromBoardReply(DatabaseBoardInfoResponse->GetRef());
94+
} else if (Database) {
95+
RequestStateStorageEndpointsLookup(Database);
9396
Become(&TThis::StateRequestedLookup, TDuration::MilliSeconds(TBase::RequestSettings.Timeout), new TEvents::TEvWakeup());
9497
return;
9598
}
@@ -103,13 +106,7 @@ class TJsonTabletInfo : public TJsonWhiteboardRequest<TEvWhiteboard::TEvTabletSt
103106
if (params.Has("path")) {
104107
TBase::RequestSettings.Timeout = FromStringWithDefault<ui32>(params.Get("timeout"), 10000);
105108
IsBase64Encode = FromStringWithDefault<bool>(params.Get("base64"), IsBase64Encode);
106-
THolder<TEvTxUserProxy::TEvNavigate> request(new TEvTxUserProxy::TEvNavigate());
107-
if (!Event->Get()->UserToken.empty()) {
108-
request->Record.SetUserToken(Event->Get()->UserToken);
109-
}
110-
NKikimrSchemeOp::TDescribePath* record = request->Record.MutableDescribePath();
111-
record->SetPath(params.Get("path"));
112-
TBase::Send(MakeTxProxyID(), request.Release());
109+
RequestTxProxyDescribe(params.Get("path"));
113110
Become(&TThis::StateRequestedDescribe, TDuration::MilliSeconds(TBase::RequestSettings.Timeout), new TEvents::TEvWakeup());
114111
} else {
115112
TBase::Bootstrap();
@@ -134,6 +131,7 @@ class TJsonTabletInfo : public TJsonWhiteboardRequest<TEvWhiteboard::TEvTabletSt
134131
void Handle(TEvStateStorage::TEvBoardInfo::TPtr& ev) {
135132
TBase::RequestSettings.FilterNodeIds = TBase::GetNodesFromBoardReply(ev);
136133
CheckPath();
134+
RequestDone();
137135
}
138136

139137
TString GetColumnValue(const TCell& cell, const NKikimrSchemeOp::TColumnDescription& type) {
@@ -182,7 +180,7 @@ class TJsonTabletInfo : public TJsonWhiteboardRequest<TEvWhiteboard::TEvTabletSt
182180
NScheme::TTypeInfo typeInfo = NKikimr::NScheme::TypeInfoFromProto(type.GetTypeId(), type.GetTypeInfo());
183181
auto convert = NPg::PgNativeTextFromNativeBinary(cell.AsBuf(),typeInfo.GetPgTypeDesc());
184182
return TStringBuilder() << '"' << (!convert.Error ? convert.Str : *convert.Error) << '"';;
185-
}
183+
}
186184
case NScheme::NTypeIds::DyNumber: return "DyNumber";
187185
case NScheme::NTypeIds::Uuid: return "Uuid";
188186
default:
@@ -331,14 +329,13 @@ class TJsonTabletInfo : public TJsonWhiteboardRequest<TEvWhiteboard::TEvTabletSt
331329
}
332330
}
333331
}
334-
if (Tablets.empty()) {
335-
ReplyAndPassAway();
336-
} else {
332+
if (!Tablets.empty()) {
337333
TBase::Bootstrap();
338334
for (auto tablet : Tablets) {
339335
Request->Record.AddFilterTabletId(tablet.first);
340336
}
341337
}
338+
RequestDone();
342339
}
343340

344341
virtual void FilterResponse(NKikimrWhiteboard::TEvTabletStateResponse& response) override {

0 commit comments

Comments
 (0)