@@ -332,6 +332,10 @@ void TPartition::HandleWakeup(const TActorContext& ctx) {
332
332
ctx.Send (Tablet, new TEvPQ::TEvMetering (EMeteringJson::UsedStorageV1, usedStorage));
333
333
}
334
334
335
+ if (ManageWriteTimestampEstimate || !IsActive ()) {
336
+ WriteTimestampEstimate = ctx.Now ();
337
+ }
338
+
335
339
ReportCounters (ctx);
336
340
337
341
ProcessHasDataRequests (ctx);
@@ -712,12 +716,14 @@ void TPartition::Handle(TEvPQ::TEvPartitionStatus::TPtr& ev, const TActorContext
712
716
}
713
717
continue ;
714
718
}
719
+
720
+ userInfo.EndOffset = EndOffset;
721
+
715
722
if (clientId == userInfo.User ) { // fill lags
716
723
NKikimrPQ::TClientInfo* clientInfo = result.MutableLagsInfo ();
717
724
clientInfo->SetClientId (userInfo.User );
718
725
auto write = clientInfo->MutableWritePosition ();
719
726
write->SetOffset (userInfo.Offset );
720
- userInfo.EndOffset = EndOffset;
721
727
write->SetWriteTimestamp ((userInfo.GetWriteTimestamp () ? userInfo.GetWriteTimestamp () : GetWriteTimeEstimate (userInfo.Offset )).MilliSeconds ());
722
728
write->SetCreateTimestamp (userInfo.GetCreateTimestamp ().MilliSeconds ());
723
729
auto read = clientInfo->MutableReadPosition ();
@@ -727,32 +733,43 @@ void TPartition::Handle(TEvPQ::TEvPartitionStatus::TPtr& ev, const TActorContext
727
733
write->SetSize (GetSizeLag (userInfo.Offset ));
728
734
read->SetSize (GetSizeLag (userInfo.GetReadOffset ()));
729
735
730
- clientInfo->SetReadLagMs (userInfo.GetReadOffset () < (i64 )EndOffset
731
- ? (userInfo.GetReadTimestamp () - TInstant::MilliSeconds (read->GetWriteTimestamp ())).MilliSeconds ()
732
- : 0 );
733
736
clientInfo->SetLastReadTimestampMs (userInfo.GetReadTimestamp ().MilliSeconds ());
734
- clientInfo->SetWriteLagMs (userInfo.GetWriteLagMs ());
735
- ui64 totalLag = clientInfo->GetReadLagMs () + userInfo.GetWriteLagMs () + (ctx.Now () - userInfo.GetReadTimestamp ()).MilliSeconds ();
736
- clientInfo->SetTotalLagMs (totalLag);
737
+ if (IsActive () || userInfo.GetReadOffset () < (i64 )EndOffset) {
738
+ clientInfo->SetReadLagMs (userInfo.GetReadOffset () < (i64 )EndOffset
739
+ ? (userInfo.GetReadTimestamp () - TInstant::MilliSeconds (read->GetWriteTimestamp ())).MilliSeconds ()
740
+ : 0 );
741
+ clientInfo->SetWriteLagMs (userInfo.GetWriteLagMs ());
742
+ ui64 totalLag = clientInfo->GetReadLagMs () + userInfo.GetWriteLagMs () + (ctx.Now () - userInfo.GetReadTimestamp ()).MilliSeconds ();
743
+ clientInfo->SetTotalLagMs (totalLag);
744
+ } else {
745
+ clientInfo->SetReadLagMs (0 );
746
+ clientInfo->SetWriteLagMs (0 );
747
+ clientInfo->SetTotalLagMs (0 );
748
+ }
737
749
}
738
750
739
751
if (ev->Get ()->GetStatForAllConsumers ) { // fill lags
740
752
auto * clientInfo = result.AddConsumerResult ();
741
753
clientInfo->SetConsumer (userInfo.User );
742
- auto readTimestamp = (userInfo.GetReadWriteTimestamp () ? userInfo.GetReadWriteTimestamp () : GetWriteTimeEstimate (userInfo.GetReadOffset ())).MilliSeconds ();
743
- clientInfo->SetReadLagMs (userInfo.GetReadOffset () < (i64 )EndOffset
744
- ? (userInfo.GetReadTimestamp () - TInstant::MilliSeconds (readTimestamp)).MilliSeconds ()
745
- : 0 );
746
754
clientInfo->SetLastReadTimestampMs (userInfo.GetReadTimestamp ().MilliSeconds ());
747
- clientInfo->SetWriteLagMs (userInfo.GetWriteLagMs ());
755
+
756
+ if (IsActive () || userInfo.GetReadOffset () < (i64 )EndOffset) {
757
+ auto readTimestamp = (userInfo.GetReadWriteTimestamp () ? userInfo.GetReadWriteTimestamp () : GetWriteTimeEstimate (userInfo.GetReadOffset ())).MilliSeconds ();
758
+ clientInfo->SetReadLagMs (userInfo.GetReadOffset () < (i64 )EndOffset
759
+ ? (userInfo.GetReadTimestamp () - TInstant::MilliSeconds (readTimestamp)).MilliSeconds ()
760
+ : 0 );
761
+ clientInfo->SetWriteLagMs (userInfo.GetWriteLagMs ());
762
+ } else {
763
+ clientInfo->SetReadLagMs (0 );
764
+ clientInfo->SetWriteLagMs (0 );
765
+ }
748
766
749
767
clientInfo->SetAvgReadSpeedPerMin (userInfo.AvgReadBytes [1 ].GetValue ());
750
768
clientInfo->SetAvgReadSpeedPerHour (userInfo.AvgReadBytes [2 ].GetValue ());
751
769
clientInfo->SetAvgReadSpeedPerDay (userInfo.AvgReadBytes [3 ].GetValue ());
752
770
753
771
clientInfo->SetReadingFinished (LastOffsetHasBeenCommited (userInfo));
754
772
}
755
-
756
773
}
757
774
758
775
result.SetStartOffset (StartOffset);
0 commit comments