Skip to content

Commit

Permalink
fix segfault in tenantinfo handler (ydb-platform#8449)
Browse files Browse the repository at this point in the history
  • Loading branch information
adameat authored Aug 29, 2024
1 parent 13f7cbd commit 3f33b88
Showing 1 changed file with 28 additions and 25 deletions.
53 changes: 28 additions & 25 deletions ydb/core/viewer/viewer_tenantinfo.h
Original file line number Diff line number Diff line change
Expand Up @@ -645,35 +645,38 @@ class TJsonTenantInfo : public TViewerPipeClient {
TIntrusivePtr<TDomainsInfo> domains = AppData()->DomainsInfo;
auto* domain = domains->GetDomain();
TStackVec<TTabletId, 64> tablets;
for (TTabletId tabletId : entry.DomainInfo->Params.GetCoordinators()) {
tablets.emplace_back(tabletId);
}
for (TTabletId tabletId : entry.DomainInfo->Params.GetMediators()) {
tablets.emplace_back(tabletId);
}
if (entry.DomainInfo->Params.HasSchemeShard()) {
tablets.emplace_back(entry.DomainInfo->Params.GetSchemeShard());
} else {

tablets.emplace_back(domain->SchemeRoot);
tablets.emplace_back(MakeBSControllerID());
tablets.emplace_back(MakeConsoleID());
}
TTabletId hiveId = domains->GetHive();
if (entry.DomainInfo->Params.HasHive()) {
hiveId = entry.DomainInfo->Params.GetHive();
} else {
if (tenant.GetType() == NKikimrViewer::Serverless) {
auto itResourceNavigate = NavigateKeySetResult.find(tenant.GetResourceId());
if (itResourceNavigate != NavigateKeySetResult.end() && itResourceNavigate->second.IsOk()) {
NSchemeCache::TSchemeCacheNavigate::TEntry entry = itResourceNavigate->second.Get()->Request->ResultSet.front();
if (entry.DomainInfo->Params.HasHive()) {
hiveId = entry.DomainInfo->Params.GetHive();
TTabletId hiveId;
if (entry.DomainInfo) {
for (TTabletId tabletId : entry.DomainInfo->Params.GetCoordinators()) {
tablets.emplace_back(tabletId);
}
for (TTabletId tabletId : entry.DomainInfo->Params.GetMediators()) {
tablets.emplace_back(tabletId);
}
if (entry.DomainInfo->Params.HasSchemeShard()) {
tablets.emplace_back(entry.DomainInfo->Params.GetSchemeShard());
} else {
tablets.emplace_back(domain->SchemeRoot);
}
if (entry.DomainInfo->Params.HasHive()) {
tablets.emplace_back(hiveId = entry.DomainInfo->Params.GetHive());
} else {
if (tenant.GetType() == NKikimrViewer::Serverless) {
auto itResourceNavigate = NavigateKeySetResult.find(tenant.GetResourceId());
if (itResourceNavigate != NavigateKeySetResult.end() && itResourceNavigate->second.IsOk()) {
NSchemeCache::TSchemeCacheNavigate::TEntry entry = itResourceNavigate->second.Get()->Request->ResultSet.front();
if (entry.DomainInfo->Params.HasHive()) {
tablets.emplace_back(hiveId = entry.DomainInfo->Params.GetHive());
}
}
} else {
tablets.emplace_back(hiveId = domains->GetHive());
}
}
} else {
tablets.emplace_back(domain->SchemeRoot);
tablets.emplace_back(hiveId = domains->GetHive());
}
tablets.emplace_back(hiveId);

if (SystemTablets) {
for (TTabletId tabletId : tablets) {
Expand Down

0 comments on commit 3f33b88

Please sign in to comment.