Browse Source

Ignore message acks from previous subsessions (#7683)

qyryq 7 months ago
parent
commit
0b61b05de7

+ 5 - 1
ydb/public/sdk/cpp/client/ydb_federated_topic/impl/federated_write_session.cpp

@@ -140,9 +140,13 @@ std::shared_ptr<NTopic::IWriteSession> TFederatedWriteSessionImpl::OpenSubsessio
                 }
             }
         })
-        .AcksHandler([selfCtx = SelfContext](NTopic::TWriteSessionEvent::TAcksEvent& ev) {
+        .AcksHandler([selfCtx = SelfContext, generation = SubsessionGeneration](NTopic::TWriteSessionEvent::TAcksEvent& ev) {
             if (auto self = selfCtx->LockShared()) {
                 with_lock(self->Lock) {
+                    if (generation != self->SubsessionGeneration) {
+                        return;
+                    }
+
                     Y_ABORT_UNLESS(ev.Acks.size() <= self->OriginalMessagesToGetAck.size());
 
                     for (size_t i = 0; i < ev.Acks.size(); ++i) {