[
https://issues.apache.org/jira/browse/KAFKA-19367?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Justine Olshan resolved KAFKA-19367.
------------------------------------
Fix Version/s: 4.0.1
Resolution: Fixed
> InitProducerId with TV2 double-increments epoch if ongoing transaction is
> aborted
> ---------------------------------------------------------------------------------
>
> Key: KAFKA-19367
> URL: https://issues.apache.org/jira/browse/KAFKA-19367
> Project: Kafka
> Issue Type: Bug
> Components: core
> Affects Versions: 4.0.0
> Reporter: Artem Livshits
> Assignee: Ritika Reddy
> Priority: Blocker
> Fix For: 4.0.1, 4.1.0
>
>
> When InitProducerId is handled on the transaction coordinator, the producer
> epoch is incremented (so that we fence stale requests), then if a transaction
> was ongoing during this time, it's aborted. With transaction version 2
> (a.k.a. KIP-890 part 2), abort increments the producer epoch again (it's the
> part of the new abort / commit protocol), so the epoch ends up incremented
> twice.
> In most cases this is benign, but in the case when the epoch of the ongoing
> transaction is 32766, it's incremented to 32767 which is max value for short,
> and then when it's incremented for the second time, it goes negative, and
> causes illegal argument exception.
> # First increment happens
> [here|https://github.com/apache/kafka/blob/b1ea280ab1012e857d4c8354fc57951f9c88f667/core/src/main/scala/kafka/coordinator/transaction/TransactionMetadata.scala#L100]
> # Second increment happens
> [here|https://github.com/apache/kafka/blob/b1ea280ab1012e857d4c8354fc57951f9c88f667/core/src/main/scala/kafka/coordinator/transaction/TransactionMetadata.scala#L195]
> # Illegal argument exception happens
> [here|https://github.com/apache/kafka/blob/b1ea280ab1012e857d4c8354fc57951f9c88f667/core/src/main/scala/kafka/coordinator/transaction/TransactionMetadata.scala#L289]
>
> Most likely the solution would be to just not bump epoch when we reset the
> fenced state
> [here|https://github.com/apache/kafka/blob/b1ea280ab1012e857d4c8354fc57951f9c88f667/core/src/main/scala/kafka/coordinator/transaction/TransactionCoordinator.scala#L572].
>
--
This message was sent by Atlassian Jira
(v8.20.10#820010)