[ https://issues.apache.org/jira/browse/KAFKA-14880?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
David Jacot resolved KAFKA-14880. --------------------------------- Fix Version/s: 3.2.4 3.1.3 3.0.3 3.4.1 3.3.3 Resolution: Fixed > TransactionMetadata with producer epoch -1 should be expirable > --------------------------------------------------------------- > > Key: KAFKA-14880 > URL: https://issues.apache.org/jira/browse/KAFKA-14880 > Project: Kafka > Issue Type: Bug > Affects Versions: 3.1.0, 3.0.0, 3.2.0, 3.3.0, 3.4.0 > Reporter: David Jacot > Assignee: David Jacot > Priority: Major > Fix For: 3.2.4, 3.1.3, 3.0.3, 3.4.1, 3.3.3 > > > We have seen the following error in logs: > {noformat} > "Mar 22, 2019 @ > 21:57:56.655",Error,"kafka-0-0","transaction-log-manager-0","Uncaught > exception in scheduled task > 'transactionalId-expiration'","java.lang.IllegalArgumentException: Illegal > new producer epoch -1 > {noformat} > Investigations showed that it is actually possible for a transaction metadata > object to still have -1 as producer epoch when it transitions to Dead. > When a transaction metadata is created for the first time (in > handleInitProducerId), it has -1 as its producer epoch. Then a producer epoch > is attributed and the transaction coordinator tries to persist the change. If > the write fail for instance because there is an under min isr, the > transaction metadata remains with its epoch as -1 forever or until the init > producer id is retried. > This means that it is possible for transaction metadata to remain with -1 as > producer epoch until it gets expired. At the moment, this is not allowed > because we enforce a producer epoch greater or equals to 0 in > prepareTransitionTo. -- This message was sent by Atlassian Jira (v8.20.10#820010)