@@ -1780,7 +1780,7 @@ bool THive::IsTabletMoveExpedient(const TTabletInfo& tablet, const TNodeInfo& no
1780
1780
return result;
1781
1781
}
1782
1782
1783
- void THive::FillTabletInfo (NKikimrHive::TEvResponseHiveInfo& response, ui64 tabletId, const TLeaderTabletInfo *info, const NKikimrHive::TEvRequestHiveInfo &req) {
1783
+ void THive::FillTabletInfo (NKikimrHive::TEvResponseHiveInfo& response, ui64 tabletId, const TLeaderTabletInfo *info, const NKikimrHive::TEvRequestHiveInfo &req, TInstant restartsBarrierTime ) {
1784
1784
if (info) {
1785
1785
auto & tabletInfo = *response.AddTablets ();
1786
1786
tabletInfo.SetTabletID (tabletId);
@@ -1800,7 +1800,7 @@ void THive::FillTabletInfo(NKikimrHive::TEvResponseHiveInfo& response, ui64 tabl
1800
1800
if (!info->IsRunning ()) {
1801
1801
tabletInfo.SetLastAliveTimestamp (info->Statistics .GetLastAliveTimestamp ());
1802
1802
}
1803
- tabletInfo.SetRestartsPerPeriod (info->Statistics . RestartTimestampSize ( ));
1803
+ tabletInfo.SetRestartsPerPeriod (info->GetRestartsPerPeriod (restartsBarrierTime ));
1804
1804
if (req.GetReturnMetrics ()) {
1805
1805
tabletInfo.MutableMetrics ()->CopyFrom (info->GetResourceValues ());
1806
1806
}
@@ -1831,7 +1831,7 @@ void THive::FillTabletInfo(NKikimrHive::TEvResponseHiveInfo& response, ui64 tabl
1831
1831
if (!follower.IsRunning ()) {
1832
1832
tabletInfo.SetLastAliveTimestamp (follower.Statistics .GetLastAliveTimestamp ());
1833
1833
}
1834
- tabletInfo.SetRestartsPerPeriod (follower.Statistics . RestartTimestampSize ( ));
1834
+ tabletInfo.SetRestartsPerPeriod (follower.GetRestartsPerPeriod (restartsBarrierTime ));
1835
1835
if (req.GetReturnMetrics ()) {
1836
1836
tabletInfo.MutableMetrics ()->CopyFrom (follower.GetResourceValues ());
1837
1837
}
@@ -1844,16 +1844,16 @@ void THive::Handle(TEvHive::TEvRequestHiveInfo::TPtr& ev) {
1844
1844
const auto & record = ev->Get ()->Record ;
1845
1845
TAutoPtr<TEvHive::TEvResponseHiveInfo> response = new TEvHive::TEvResponseHiveInfo ();
1846
1846
TInstant now = TlsActivationContext->Now ();
1847
+ TInstant restartsBarrierTime = now - GetTabletRestartsPeriod ();
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
- FillTabletInfo (response->Record , record.GetTabletID (), tablet, record);
1856
+ FillTabletInfo (response->Record , record.GetTabletID (), tablet, record, restartsBarrierTime);
1857
1857
} else {
1858
1858
BLOG_W (" Can't find the tablet from RequestHiveInfo(TabletID=" << tabletId << " )" );
1859
1859
}
@@ -1866,8 +1866,7 @@ void THive::Handle(TEvHive::TEvRequestHiveInfo::TPtr& ev) {
1866
1866
if (it->second .IsDeleting ()) {
1867
1867
continue ;
1868
1868
}
1869
- it->second .ActualizeTabletStatistics (now);
1870
- FillTabletInfo (response->Record , it->first , &it->second , record);
1869
+ FillTabletInfo (response->Record , it->first , &it->second , record, restartsBarrierTime);
1871
1870
}
1872
1871
response->Record .set_starttimetimestamp (StartTime ().MilliSeconds ());
1873
1872
response->Record .set_responsetimestamp (TAppData::TimeProvider->Now ().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
}
@@ -3298,6 +3299,11 @@ void THive::ActualizeRestartStatistics(google::protobuf::RepeatedField<google::p
3298
3299
array.erase (begin, it);
3299
3300
}
3300
3301
3302
+ ui64 THive::GetRestartsPerPeriod (const google::protobuf::RepeatedField<google::protobuf::uint64>& restartTimestamps, ui64 barrier) {
3303
+ auto it = std::lower_bound (restartTimestamps.begin (), restartTimestamps.end (), barrier);
3304
+ return restartTimestamps.end () - it;
3305
+ }
3306
+
3301
3307
bool THive::IsSystemTablet (TTabletTypes::EType type) {
3302
3308
switch (type) {
3303
3309
case TTabletTypes::Coordinator:
0 commit comments