summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorandrew-rykov <[email protected]>2023-04-07 19:57:50 +0300
committerandrew-rykov <[email protected]>2023-04-07 19:57:50 +0300
commit074696b0b5f6b3a8e54b1a48acf8b7277d635f9d (patch)
tree03931e8d08dd43b0126eb138e1541b7a29246e63
parent7ed09b46300d8f96017e90a08cb11c76f0da736e (diff)
return dead tablets
remove logs dead-tablets
-rw-r--r--ydb/core/viewer/json_tabletinfo.h48
1 files changed, 29 insertions, 19 deletions
diff --git a/ydb/core/viewer/json_tabletinfo.h b/ydb/core/viewer/json_tabletinfo.h
index d1ddba81e91..1d5cf08ab44 100644
--- a/ydb/core/viewer/json_tabletinfo.h
+++ b/ydb/core/viewer/json_tabletinfo.h
@@ -3,6 +3,7 @@
#include <library/cpp/actors/core/interconnect.h>
#include <library/cpp/actors/core/mon.h>
#include <ydb/core/protos/services.pb.h>
+#include <ydb/core/protos/node_whiteboard.pb.h>
#include <ydb/core/tx/schemeshard/schemeshard.h>
#include <ydb/core/tx/tx_proxy/proxy.h>
#include <ydb/core/node_whiteboard/node_whiteboard.h>
@@ -79,7 +80,8 @@ class TJsonTabletInfo : public TJsonWhiteboardRequest<TEvWhiteboard::TEvTabletSt
static const bool WithRetry = false;
using TBase = TJsonWhiteboardRequest<TEvWhiteboard::TEvTabletStateRequest, TEvWhiteboard::TEvTabletStateResponse>;
using TThis = TJsonTabletInfo;
- TVector<ui64> Tablets;
+ THashMap<ui64, NKikimrTabletBase::TTabletTypes::EType> Tablets;
+ TTabletId HiveId;
public:
TJsonTabletInfo(IViewer *viewer, NMon::TEvHttpInfo::TPtr &ev)
: TJsonWhiteboardRequest(viewer, ev)
@@ -110,7 +112,7 @@ public:
TString strTabletId(TBase::RequestSettings.FilterFields.substr(10, TBase::RequestSettings.FilterFields.size() - 11));
TTabletId uiTabletId(FromStringWithDefault<TTabletId>(strTabletId, {}));
if (uiTabletId) {
- Tablets.push_back(uiTabletId);
+ Tablets[uiTabletId] = NKikimrTabletBase::TTabletTypes::Unknown;
Request->Record.AddFilterTabletId(uiTabletId);
}
}
@@ -119,19 +121,21 @@ public:
}
void Handle(NSchemeShard::TEvSchemeShard::TEvDescribeSchemeResult::TPtr &ev) {
+ const NKikimrScheme::TEvDescribeSchemeResult &rec = ev->Get()->GetRecord();
+ HiveId = rec.GetPathDescription().GetDomainDescription().GetProcessingParams().GetHive();
+
THolder<NSchemeShard::TEvSchemeShard::TEvDescribeSchemeResult> describeResult = ev->Release();
if (describeResult->GetRecord().GetStatus() == NKikimrScheme::EStatus::StatusSuccess) {
const auto& pathDescription = describeResult->GetRecord().GetPathDescription();
if (pathDescription.GetSelf().GetPathType() == NKikimrSchemeOp::EPathType::EPathTypeTable) {
- Tablets.reserve(describeResult->GetRecord().GetPathDescription().TablePartitionsSize());
for (const auto& partition : describeResult->GetRecord().GetPathDescription().GetTablePartitions()) {
- Tablets.emplace_back(partition.GetDatashardId());
+ Tablets[partition.GetDatashardId()] = NKikimrTabletBase::TTabletTypes::DataShard;
}
}
if (pathDescription.GetSelf().GetPathType() == NKikimrSchemeOp::EPathType::EPathTypePersQueueGroup) {
Tablets.reserve(describeResult->GetRecord().GetPathDescription().GetPersQueueGroup().PartitionsSize());
for (const auto& partition : describeResult->GetRecord().GetPathDescription().GetPersQueueGroup().GetPartitions()) {
- Tablets.emplace_back(partition.GetTabletId());
+ Tablets[partition.GetTabletId()] = NKikimrTabletBase::TTabletTypes::PersQueue;
}
}
if (pathDescription.GetSelf().GetPathType() == NKikimrSchemeOp::EPathType::EPathTypeDir
@@ -139,39 +143,36 @@ public:
|| pathDescription.GetSelf().GetPathType() == NKikimrSchemeOp::EPathType::EPathTypeExtSubDomain) {
if (pathDescription.HasDomainDescription()) {
for (TTabletId tabletId : pathDescription.GetDomainDescription().GetProcessingParams().GetCoordinators()) {
- Tablets.emplace_back(tabletId);
+ Tablets[tabletId] = NKikimrTabletBase::TTabletTypes::Coordinator;
}
for (TTabletId tabletId : pathDescription.GetDomainDescription().GetProcessingParams().GetMediators()) {
- Tablets.emplace_back(tabletId);
+ Tablets[tabletId] = NKikimrTabletBase::TTabletTypes::Mediator;
}
if (pathDescription.GetDomainDescription().GetProcessingParams().HasSchemeShard()) {
- Tablets.emplace_back(pathDescription.GetDomainDescription().GetProcessingParams().GetSchemeShard());
+ Tablets[pathDescription.GetDomainDescription().GetProcessingParams().GetSchemeShard()] = NKikimrTabletBase::TTabletTypes::SchemeShard;
} else {
TIntrusivePtr<TDomainsInfo> domains = AppData()->DomainsInfo;
TIntrusivePtr<TDomainsInfo::TDomain> domain = domains->Domains.begin()->second;
-
- Tablets.emplace_back(domain->SchemeRoot);
+ Tablets[domain->SchemeRoot] = NKikimrTabletBase::TTabletTypes::SchemeShard;
ui32 hiveDomain = domains->GetHiveDomainUid(domain->DefaultHiveUid);
ui64 defaultStateStorageGroup = domains->GetDefaultStateStorageGroup(hiveDomain);
- Tablets.emplace_back(MakeBSControllerID(defaultStateStorageGroup));
- Tablets.emplace_back(MakeConsoleID(defaultStateStorageGroup));
- Tablets.emplace_back(MakeNodeBrokerID(defaultStateStorageGroup));
+ Tablets[MakeBSControllerID(defaultStateStorageGroup)] = NKikimrTabletBase::TTabletTypes::BSController;
+ Tablets[MakeConsoleID(defaultStateStorageGroup)] = NKikimrTabletBase::TTabletTypes::Console;
+ Tablets[MakeNodeBrokerID(defaultStateStorageGroup)] = NKikimrTabletBase::TTabletTypes::NodeBroker;
}
if (pathDescription.GetDomainDescription().GetProcessingParams().HasHive()) {
- Tablets.emplace_back(pathDescription.GetDomainDescription().GetProcessingParams().GetHive());
+ Tablets[pathDescription.GetDomainDescription().GetProcessingParams().GetHive()] = NKikimrTabletBase::TTabletTypes::Hive;
}
}
}
- Sort(Tablets);
- Tablets.erase(std::unique(Tablets.begin(), Tablets.end()), Tablets.end());
}
if (Tablets.empty()) {
ReplyAndPassAway();
} else {
TBase::Bootstrap();
- for (TTabletId tabletId : Tablets) {
- Request->Record.AddFilterTabletId(tabletId);
+ for (auto tablet : Tablets) {
+ Request->Record.AddFilterTabletId(tablet.first);
}
}
}
@@ -180,10 +181,19 @@ public:
if (!Tablets.empty()) {
NKikimrWhiteboard::TEvTabletStateResponse result;
for (const NKikimrWhiteboard::TTabletStateInfo& info : response.GetTabletStateInfo()) {
- if (BinarySearch(Tablets.begin(), Tablets.end(), info.GetTabletId())) {
+ auto tablet = Tablets.find(info.GetTabletId());
+ if (tablet != Tablets.end()) {
result.MutableTabletStateInfo()->Add()->CopyFrom(info);
+ Tablets.erase(tablet->first);
}
}
+ for (auto tablet : Tablets) {
+ auto deadTablet = result.MutableTabletStateInfo()->Add();
+ deadTablet->SetTabletId(tablet.first);
+ deadTablet->SetState(NKikimrWhiteboard::TTabletStateInfo::Dead);
+ deadTablet->SetType(tablet.second);
+ deadTablet->SetHiveId(HiveId);
+ }
result.SetResponseTime(response.GetResponseTime());
response = std::move(result);
}