Calvin Liu created KAFKA-16217:
----------------------------------
Summary: Transactional producer stuck in IllegalStateException
during close
Key: KAFKA-16217
URL: https://issues.apache.org/jira/browse/KAFKA-16217
Project: Kafka
Issue Type: Bug
Components: clients
Reporter: Calvin Liu
The producer is stuck during the close. It keeps retrying to abort the
transaction but it never succeeds.
{code:java}
[ERROR] 2024-02-01 17:21:22,804 [kafka-producer-network-thread |
producer-transaction-bench-transaction-id-f60SGdyRQGGFjdgg3vUgKg]
org.apache.kafka.clients.producer.internals.Sender run - [Producer
clientId=producer-transaction-ben
ch-transaction-id-f60SGdyRQGGFjdgg3vUgKg,
transactionalId=transaction-bench-transaction-id-f60SGdyRQGGFjdgg3vUgKg] Error
in kafka producer I/O thread while aborting transaction:
java.lang.IllegalStateException: Cannot attempt operation `abortTransaction`
because the previous call to `commitTransaction` timed out and must be retried
at
org.apache.kafka.clients.producer.internals.TransactionManager.handleCachedTransactionRequestResult(TransactionManager.java:1138)
at
org.apache.kafka.clients.producer.internals.TransactionManager.beginAbort(TransactionManager.java:323)
at
org.apache.kafka.clients.producer.internals.Sender.run(Sender.java:274)
at java.base/java.lang.Thread.run(Thread.java:1583)
at org.apache.kafka.common.utils.KafkaThread.run(KafkaThread.java:66)
{code}
With the additional log, I found the root cause. If the producer is in a bad
transaction state(in my case, the TransactionManager.pendingTransition was set
to commitTransaction and did not get cleaned), before the producer calls close
and tries to abort the existing transaction, the producer will get stuck in the
transaction abortion. It is related to the fix
[https://github.com/apache/kafka/pull/13591].
--
This message was sent by Atlassian Jira
(v8.20.10#820010)