jolshan commented on code in PR #19910: URL: https://github.com/apache/kafka/pull/19910#discussion_r2136822173
########## core/src/main/scala/kafka/coordinator/transaction/TransactionCoordinator.scala: ########## @@ -819,11 +819,14 @@ class TransactionCoordinator(txnConfig: TransactionConfig, } if (nextState == TransactionState.PREPARE_ABORT && isEpochFence) { - // We should clear the pending state to make way for the transition to PrepareAbort and also bump - // the epoch in the transaction metadata we are about to append. + // We should clear the pending state to make way for the transition to PrepareAbort txnMetadata.pendingState = None - txnMetadata.producerEpoch = producerEpoch - txnMetadata.lastProducerEpoch = RecordBatch.NO_PRODUCER_EPOCH + if (!clientTransactionVersion.supportsEpochBump()) { + // For TV1, manually bump // the epoch in the transaction metadata we are about to append. + txnMetadata.producerEpoch = producerEpoch + txnMetadata.lastProducerEpoch = RecordBatch.NO_PRODUCER_EPOCH Review Comment: Yeah if I recall correctly, for tv2, I wanted to try to avoid setting fields outside of the actual transition. It was just this weird epoch fence state that does things differently. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: jira-unsubscr...@kafka.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org