[ https://issues.apache.org/jira/browse/KAFKA-17507?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
David Jacot updated KAFKA-17507: -------------------------------- Fix Version/s: 3.9.1 > WriteTxnMarkers API must not return until markers are written and > materialized in group coordinator's cache > ----------------------------------------------------------------------------------------------------------- > > Key: KAFKA-17507 > URL: https://issues.apache.org/jira/browse/KAFKA-17507 > Project: Kafka > Issue Type: Bug > Reporter: David Jacot > Assignee: David Jacot > Priority: Major > Fix For: 4.0.0, 3.9.1 > > > We have observed the below errors in some cluster: > Uncaught exception in scheduled task 'handleTxnCompletion-902667' > exception.message:Trying to complete a transactional offset commit for > producerId *** and groupId *** even though the offset commit record itself > hasn't been appended to the log. > When a transaction is completed, the transaction coordinator sends a > WriteTxnMarkers request to all the partitions involved in the transaction to > write the markers to them. When the broker receives it, it writes the markers > and if markers are written to the __consumer_offsets partitions, it informs > the group coordinator that it can materialize the pending transactional > offsets in its main cache. The group coordinator does this asynchronously > since Apache Kafka 2.0, see thisĀ > [patch|https://github.com/apache/kafka/commit/c53e274d3128bc92f0e8b6a79c407cf764f16f7b]. > The above error appends when the asynchronous operation is executed by the > scheduler and the operation finds that there are pending transactional > offsets that were not written yet. How come? > There is actually an issue is the steps described above. The group > coordinator does not wait until the asynchronous operation completes to > return to the api layer. Hence the WriteTxnMarkers response may be send back > to the transaction coordinator before the async operation is actually > completed. Hence it is possible that the next transactional produce to be > started also before the operation is completed too. This could explain why > the group coordinator has pending transactional offsets that are not written > yet. > There is a similar issue when the transaction is aborted. However on this > path, we don't have any checks to verify whether all the pending > transactional offsets have been written or not so we don't see any errors in > our logs. Due to the same race condition, it is possible to actually remove > the wrong pending transactional offsets. > PS: The new group coordinator is not impacted by this bug. -- This message was sent by Atlassian Jira (v8.20.10#820010)