Justine Olshan created KAFKA-18464: -------------------------------------- Summary: Empty Abort Transaction can fence producer incorrectly with Transactions V2 Key: KAFKA-18464 URL: https://issues.apache.org/jira/browse/KAFKA-18464 Project: Kafka Issue Type: Bug Affects Versions: 4.0.0 Reporter: Justine Olshan Assignee: Justine Olshan
Consider the following scenario using transactions V2. Producer writes a transaction and commits. Producer starts the next transaction and tries to add a partition but gets an non-retriable error. Because the application doesn't know whether the partition was added/records written the producer aborts. In the case where the partition was not added, and the previous transaction was still in PrepareCommit state, we self-fence. This is because the epoch of the current state == incoming request epoch and the PrepareCommit state currently only allows for retries where the request epoch is -1 the current epoch. Instead of hitting this, we should just return the concurrent transactions error when we have pending state and do the epoch check second. In this scenario, we will complete commit before proceeding to the empty abort. -- This message was sent by Atlassian Jira (v8.20.10#820010)