@@ -242,7 +242,7 @@ class TRowDispatcher : public TActorBootstrapped<TRowDispatcher> {
242
242
243
243
struct TAggregatedStats {
244
244
NYql::TCounters::TEntry AllSessionsReadBytes;
245
- TMap<TQueryStatKey, TAggQueryStat> LastQueryStats;
245
+ TMap<TQueryStatKey, TMaybe< TAggQueryStat> > LastQueryStats;
246
246
TDuration LastUpdateMetricsPeriod;
247
247
};
248
248
@@ -364,6 +364,7 @@ class TRowDispatcher : public TActorBootstrapped<TRowDispatcher> {
364
364
TString GetInternalState ();
365
365
template <class TEventPtr >
366
366
bool CheckSession (TAtomicSharedPtr<ConsumerInfo>& consumer, const TEventPtr& ev);
367
+ void SetQueryMetrics (const TQueryStatKey& queryKey, ui64 unreadBytesMax, ui64 unreadBytesAvg, i64 readLagMessagesMax);
367
368
void PrintStateToLog ();
368
369
369
370
STRICT_STFUNC (
@@ -516,7 +517,9 @@ void TRowDispatcher::UpdateMetrics() {
516
517
}
517
518
518
519
AggrStats.AllSessionsReadBytes = NYql::TCounters::TEntry ();
519
- AggrStats.LastQueryStats .clear ();
520
+ for (auto & [queryId, stat] : AggrStats.LastQueryStats ) {
521
+ stat = Nothing ();
522
+ }
520
523
521
524
for (auto & [key, sessionsInfo] : TopicSessions) {
522
525
const auto & topic = key.TopicPath ;
@@ -527,18 +530,34 @@ void TRowDispatcher::UpdateMetrics() {
527
530
sessionInfo.Stat .Clear ();
528
531
529
532
for (auto & [readActorId, consumer] : sessionInfo.Consumers ) {
530
- AggrStats.LastQueryStats [TQueryStatKey{consumer->QueryId , topic}].Add (consumer->Stat );
533
+ auto & stat = AggrStats.LastQueryStats [TQueryStatKey{consumer->QueryId , topic}];
534
+ if (!stat) {
535
+ stat = TAggQueryStat ();
536
+ }
537
+ stat->Add (consumer->Stat );
531
538
consumer->Stat .Clear ();
532
539
}
533
540
}
534
541
}
535
- for (const auto & [queryStatKey, stat] : AggrStats.LastQueryStats ) {
536
- auto queryGroup = Metrics.Counters ->GetSubgroup (" queryId" , queryStatKey.first );
537
- auto topicGroup = queryGroup->GetSubgroup (" topic" , CleanupCounterValueString (queryStatKey.second ));
538
- topicGroup->GetCounter (" MaxUnreadBytes" )->Set (stat.UnreadBytes .Max );
539
- topicGroup->GetCounter (" AvgUnreadBytes" )->Set (stat.UnreadBytes .Avg );
540
- topicGroup->GetCounter (" MaxReadLag" )->Set (stat.ReadLagMessages .Max );
542
+ for (auto it = AggrStats.LastQueryStats .begin (); it != AggrStats.LastQueryStats .end ();) {
543
+ const auto & stats = it->second ;
544
+ if (!stats) {
545
+ SetQueryMetrics (it->first , 0 , 0 , 0 );
546
+ it = AggrStats.LastQueryStats .erase (it);
547
+ continue ;
548
+ }
549
+ SetQueryMetrics (it->first , stats->UnreadBytes .Max , stats->UnreadBytes .Avg , stats->ReadLagMessages .Max );
550
+ ++it;
541
551
}
552
+ PrintStateToLog ();
553
+ }
554
+
555
+ void TRowDispatcher::SetQueryMetrics (const TQueryStatKey& queryKey, ui64 unreadBytesMax, ui64 unreadBytesAvg, i64 readLagMessagesMax) {
556
+ auto queryGroup = Metrics.Counters ->GetSubgroup (" queryId" , queryKey.first );
557
+ auto topicGroup = queryGroup->GetSubgroup (" topic" , CleanupCounterValueString (queryKey.second ));
558
+ topicGroup->GetCounter (" MaxUnreadBytes" )->Set (unreadBytesMax);
559
+ topicGroup->GetCounter (" AvgUnreadBytes" )->Set (unreadBytesAvg);
560
+ topicGroup->GetCounter (" MaxReadLag" )->Set (readLagMessagesMax);
542
561
}
543
562
544
563
TString TRowDispatcher::GetInternalState () {
@@ -598,7 +617,9 @@ TString TRowDispatcher::GetInternalState() {
598
617
auto sessionsBufferSumSize = sessionCountByQuery[queryStatKey] * MaxSessionBufferSizeBytes;
599
618
auto used = sessionsBufferSumSize ? (stat.UnreadBytes .Sum * 100.0 / sessionsBufferSumSize) : 0.0 ;
600
619
str << " " << queryId << " / " << topic << " : buffer used (all partitions) " << LeftPad (Prec (used, 4 ), 10 ) << " % (" << toHuman (stat.UnreadBytes .Sum ) << " ) unread max (one partition) " << toHuman (stat.UnreadBytes .Max ) << " data rate" ;
601
- printDataRate (aggStat.ReadBytes );
620
+ if (aggStat) {
621
+ printDataRate (aggStat->ReadBytes );
622
+ }
602
623
str << " waiting " << stat.IsWaiting << " max read lag " << stat.ReadLagMessages .Max ;
603
624
str << " \n " ;
604
625
}
0 commit comments