@@ -148,8 +148,8 @@ class TTopicSession : public TActorBootstrapped<TTopicSession> {
148
148
TQueue<std::pair<ui64, TString>> Buffer;
149
149
ui64 UnreadBytes = 0 ;
150
150
bool DataArrivedSent = false ;
151
- TMaybe<ui64> NextMessageOffset;
152
- ui64 LastSendedNextMessageOffset = 0 ;
151
+ TMaybe<ui64> NextMessageOffset; // offset to restart topic session
152
+ TMaybe< ui64> ProcessedNextMessageOffset; // offset of fully processed data (to save to checkpoint)
153
153
TVector<ui64> FieldsIds;
154
154
TDuration ReconnectPeriod;
155
155
TStats Stat; // Send (filtered) to read_actor
@@ -509,16 +509,15 @@ void TTopicSession::Handle(NFq::TEvPrivate::TEvSendStatisticToReadActor::TPtr&)
509
509
510
510
auto readBytes = ClientsStats.Bytes ;
511
511
for (auto & [actorId, info] : Clients) {
512
- if (!info.NextMessageOffset ) {
512
+ if (!info.ProcessedNextMessageOffset ) {
513
513
continue ;
514
514
}
515
515
auto event = std::make_unique<TEvRowDispatcher::TEvStatistics>();
516
516
event->Record .SetPartitionId (PartitionId);
517
- event->Record .SetNextMessageOffset (*info.NextMessageOffset );
517
+ event->Record .SetNextMessageOffset (*info.ProcessedNextMessageOffset );
518
518
event->Record .SetReadBytes (readBytes);
519
- info.LastSendedNextMessageOffset = *info.NextMessageOffset ;
520
519
event->ReadActorId = info.ReadActorId ;
521
- LOG_ROW_DISPATCHER_TRACE (" Send status to " << info.ReadActorId << " , offset " << * info.NextMessageOffset );
520
+ LOG_ROW_DISPATCHER_TRACE (" Send status to " << info.ReadActorId << " , offset " << info.ProcessedNextMessageOffset );
522
521
Send (RowDispatcherActorId, event.release ());
523
522
}
524
523
ClientsStats.Clear ();
@@ -541,6 +540,11 @@ void TTopicSession::Handle(NFq::TEvPrivate::TEvDataFiltered::TPtr& ev) {
541
540
if (!info.NextMessageOffset || *info.NextMessageOffset < ev->Get ()->Offset + 1 ) {
542
541
info.NextMessageOffset = ev->Get ()->Offset + 1 ;
543
542
}
543
+ if (info.Buffer .empty ()) {
544
+ if (!info.ProcessedNextMessageOffset || *info.ProcessedNextMessageOffset < ev->Get ()->Offset + 1 ) {
545
+ info.ProcessedNextMessageOffset = ev->Get ()->Offset + 1 ;
546
+ }
547
+ }
544
548
}
545
549
}
546
550
@@ -776,7 +780,7 @@ void TTopicSession::SendData(TClientsInfo& info) {
776
780
} while (!info.Buffer .empty ());
777
781
info.Stat .Add (dataSize, eventsSize);
778
782
info.FilteredDataRate ->Add (dataSize);
779
- info.LastSendedNextMessageOffset = *info.NextMessageOffset ;
783
+ info.ProcessedNextMessageOffset = *info.NextMessageOffset ;
780
784
}
781
785
782
786
void TTopicSession::UpdateFieldsIds (TClientsInfo& info) {
0 commit comments