jolshan commented on code in PR #17402: URL: https://github.com/apache/kafka/pull/17402#discussion_r1821581624
########## core/src/main/scala/kafka/coordinator/transaction/TransactionMetadata.scala: ########## @@ -346,14 +346,14 @@ private[transaction] class TransactionMetadata(val transactionalId: String, // Since the state change was successfully written to the log, unset the flag for a failed epoch fence hasFailedEpochFence = false - val (updatedProducerId, updatedProducerEpoch) = + val (updatedProducerId, updatedProducerEpoch, updatedLastProducerEpoch) = // If we overflowed on epoch bump, we have to set it as the producer ID now the marker has been written. if (clientTransactionVersion.supportsEpochBump() && nextProducerId != RecordBatch.NO_PRODUCER_ID) { - (nextProducerId, 0.toShort) + (nextProducerId, 0.toShort, producerEpoch) Review Comment: Retry for this case is doesn't look at lastProducerEpoch, so either way is fine there. I think the big question is if we get a benefit from initProducerId by not updating the epoch here. The valid epoch check can be changed if we decide not to update between prepare and complete. Let me know if I'm missing something -- 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