@@ -1782,6 +1782,8 @@ bool THive::IsTabletMoveExpedient(const TTabletInfo& tablet, const TNodeInfo& no
1782
1782
1783
1783
void THive::FillTabletInfo (NKikimrHive::TEvResponseHiveInfo& response, ui64 tabletId, const TLeaderTabletInfo *info, const NKikimrHive::TEvRequestHiveInfo &req) {
1784
1784
if (info) {
1785
+ TInstant now = TActivationContext::Now ();
1786
+ TInstant restartsBarrierTime = now - GetTabletRestartsPeriod ();
1785
1787
auto & tabletInfo = *response.AddTablets ();
1786
1788
tabletInfo.SetTabletID (tabletId);
1787
1789
tabletInfo.SetTabletType (info->Type );
@@ -1800,7 +1802,7 @@ void THive::FillTabletInfo(NKikimrHive::TEvResponseHiveInfo& response, ui64 tabl
1800
1802
if (!info->IsRunning ()) {
1801
1803
tabletInfo.SetLastAliveTimestamp (info->Statistics .GetLastAliveTimestamp ());
1802
1804
}
1803
- tabletInfo.SetRestartsPerPeriod (info->Statistics . RestartTimestampSize ( ));
1805
+ tabletInfo.SetRestartsPerPeriod (info->GetRestartsPerPeriod (restartsBarrierTime ));
1804
1806
if (req.GetReturnMetrics ()) {
1805
1807
tabletInfo.MutableMetrics ()->CopyFrom (info->GetResourceValues ());
1806
1808
}
@@ -1831,7 +1833,7 @@ void THive::FillTabletInfo(NKikimrHive::TEvResponseHiveInfo& response, ui64 tabl
1831
1833
if (!follower.IsRunning ()) {
1832
1834
tabletInfo.SetLastAliveTimestamp (follower.Statistics .GetLastAliveTimestamp ());
1833
1835
}
1834
- tabletInfo.SetRestartsPerPeriod (follower.Statistics . RestartTimestampSize ( ));
1836
+ tabletInfo.SetRestartsPerPeriod (follower.GetRestartsPerPeriod (restartsBarrierTime ));
1835
1837
if (req.GetReturnMetrics ()) {
1836
1838
tabletInfo.MutableMetrics ()->CopyFrom (follower.GetResourceValues ());
1837
1839
}
@@ -1843,16 +1845,14 @@ void THive::FillTabletInfo(NKikimrHive::TEvResponseHiveInfo& response, ui64 tabl
1843
1845
void THive::Handle (TEvHive::TEvRequestHiveInfo::TPtr& ev) {
1844
1846
const auto & record = ev->Get ()->Record ;
1845
1847
TAutoPtr<TEvHive::TEvResponseHiveInfo> response = new TEvHive::TEvResponseHiveInfo ();
1846
- TInstant now = TlsActivationContext->Now ();
1847
1848
if (record.HasTabletID ()) {
1848
1849
TTabletId tabletId = record.GetTabletID ();
1849
1850
NKikimrHive::TForwardRequest forwardRequest;
1850
1851
if (CheckForForwardTabletRequest (tabletId, forwardRequest)) {
1851
1852
response->Record .MutableForwardRequest ()->CopyFrom (forwardRequest);
1852
1853
}
1853
- TLeaderTabletInfo* tablet = FindTablet (tabletId);
1854
+ const TLeaderTabletInfo* tablet = FindTablet (tabletId);
1854
1855
if (tablet) {
1855
- tablet->ActualizeTabletStatistics (now);
1856
1856
FillTabletInfo (response->Record , record.GetTabletID (), tablet, record);
1857
1857
} else {
1858
1858
BLOG_W (" Can't find the tablet from RequestHiveInfo(TabletID=" << tabletId << " )" );
@@ -1866,7 +1866,6 @@ void THive::Handle(TEvHive::TEvRequestHiveInfo::TPtr& ev) {
1866
1866
if (it->second .IsDeleting ()) {
1867
1867
continue ;
1868
1868
}
1869
- it->second .ActualizeTabletStatistics (now);
1870
1869
FillTabletInfo (response->Record , it->first , &it->second , record);
1871
1870
}
1872
1871
response->Record .set_starttimetimestamp (StartTime ().MilliSeconds ());
@@ -1955,13 +1954,15 @@ void THive::Handle(TEvHive::TEvRequestHiveDomainStats::TPtr& ev) {
1955
1954
1956
1955
void THive::Handle (TEvHive::TEvRequestHiveNodeStats::TPtr& ev) {
1957
1956
const auto & request (ev->Get ()->Record );
1957
+ TInstant now = TActivationContext::Now ();
1958
+ TInstant restartsBarrierTime = now - GetNodeRestartWatchPeriod ();
1958
1959
THolder<TEvHive::TEvResponseHiveNodeStats> response = MakeHolder<TEvHive::TEvResponseHiveNodeStats>();
1959
1960
auto & record = response->Record ;
1960
1961
if (request.GetReturnExtendedTabletInfo ()) {
1961
1962
record.SetExtendedTabletInfo (true );
1962
1963
}
1963
1964
for (auto it = Nodes.begin (); it != Nodes.end (); ++it) {
1964
- const TNodeInfo& node = it->second ;
1965
+ TNodeInfo& node = it->second ;
1965
1966
if (node.IsUnknown ()) {
1966
1967
continue ;
1967
1968
}
@@ -2035,7 +2036,7 @@ void THive::Handle(TEvHive::TEvRequestHiveNodeStats::TPtr& ev) {
2035
2036
if (!node.IsAlive ()) {
2036
2037
nodeStats.SetLastAliveTimestamp (node.Statistics .GetLastAliveTimestamp ());
2037
2038
}
2038
- nodeStats.SetRestartsPerPeriod (node.Statistics . RestartTimestampSize ( ));
2039
+ nodeStats.SetRestartsPerPeriod (node.GetRestartsPerPeriod (restartsBarrierTime ));
2039
2040
}
2040
2041
Send (ev->Sender , response.Release (), 0 , ev->Cookie );
2041
2042
}
@@ -3299,6 +3300,11 @@ void THive::ActualizeRestartStatistics(google::protobuf::RepeatedField<google::p
3299
3300
array.erase (begin, it);
3300
3301
}
3301
3302
3303
+ ui64 THive::GetRestartsPerPeriod (const google::protobuf::RepeatedField<google::protobuf::uint64>& restartTimestamps, ui64 barrier) {
3304
+ auto it = std::lower_bound (restartTimestamps.begin (), restartTimestamps.end (), barrier);
3305
+ return restartTimestamps.end () - it;
3306
+ }
3307
+
3302
3308
bool THive::IsSystemTablet (TTabletTypes::EType type) {
3303
3309
switch (type) {
3304
3310
case TTabletTypes::Coordinator:
0 commit comments