kafka
runtime_error
ai_generated
true
org.apache.kafka.common.errors.TransactionTimeoutException: The transaction coordinator has aborted the transaction due to timeout
ID: kafka/transaction-abort-timeout
80%Fix Rate
86%Confidence
1Evidence
2024-05-12First Seen
Version Compatibility
| Version | Status | Introduced | Deprecated | Notes |
|---|---|---|---|---|
| Kafka 3.6.0 | active | — | — | — |
| Kafka 3.7.1 | active | — | — | — |
Root Cause
A Kafka transaction exceeded the configured max.transaction.timeout.ms, causing the coordinator to abort it to free resources.
generic中文
Kafka事务超过了配置的max.transaction.timeout.ms,导致协调器中止事务以释放资源。
Official Documentation
https://kafka.apache.org/documentation/#transaction_configWorkarounds
-
85% success Increase `max.transaction.timeout.ms` in broker config (e.g., to 300000) and restart broker, then set producer's `transaction.timeout.ms=120000`.
Increase `max.transaction.timeout.ms` in broker config (e.g., to 300000) and restart broker, then set producer's `transaction.timeout.ms=120000`.
-
80% success Optimize transaction logic to complete within the default 60000ms by batching fewer records or reducing external calls.
Optimize transaction logic to complete within the default 60000ms by batching fewer records or reducing external calls.
-
88% success Example broker config: `transaction.max.timeout.ms=300000` in server.properties, then producer config: `props.put(ProducerConfig.TRANSACTION_TIMEOUT_CONFIG, 120000);`
Example broker config: `transaction.max.timeout.ms=300000` in server.properties, then producer config: `props.put(ProducerConfig.TRANSACTION_TIMEOUT_CONFIG, 120000);`
中文步骤
Increase `max.transaction.timeout.ms` in broker config (e.g., to 300000) and restart broker, then set producer's `transaction.timeout.ms=120000`.
Optimize transaction logic to complete within the default 60000ms by batching fewer records or reducing external calls.
Example broker config: `transaction.max.timeout.ms=300000` in server.properties, then producer config: `props.put(ProducerConfig.TRANSACTION_TIMEOUT_CONFIG, 120000);`
Dead Ends
Common approaches that don't work:
-
75% fail
The broker's max.transaction.timeout.ms overrides the producer setting, so the timeout still applies.
-
60% fail
It is not a fix; it changes the application's semantics and may cause duplicate writes.