jolshan commented on code in PR #14985: URL: https://github.com/apache/kafka/pull/14985#discussion_r1428202192
########## group-coordinator/src/main/java/org/apache/kafka/coordinator/group/OffsetMetadataManager.java: ########## @@ -892,6 +895,43 @@ public void replay( } } + /** + * Applies the given transaction marker. + * + * @param producerId The producer id. + * @param result The result of the transaction. + * @throws RuntimeException if the transaction can not be completed. + */ + public void completeTransaction( + long producerId, + TransactionResult result + ) throws RuntimeException { + Offsets pendingOffsets = pendingTransactionalOffsets.remove(producerId); + + if (result == TransactionResult.COMMIT) { + log.debug("Committed transactional offset commits for producer id {}.", producerId); + if (pendingOffsets == null) return; + + pendingOffsets.offsetsByGroup.forEach((groupId, topicOffsets) -> { + topicOffsets.forEach((topicName, partitionOffsets) -> { + partitionOffsets.forEach((partitionId, offsetAndMetadata) -> { + log.debug("Committed transaction offset commit for producer id {} in group {} " + + "with topic {}, partition {}, and offset {}.", + producerId, groupId, topicName, partitionId, offsetAndMetadata); + offsets.put( + groupId, + topicName, + partitionId, + offsetAndMetadata + ); Review Comment: I think the word uncommitted is overloaded here. There is the txn commit (marker) and the write commit (returning from the leader once all (in-sync) replicas have replicated). I assume we only move the offsets over when we see the txn commit, but they will still be unavailable until the write commit completes (as any offsets are unavailable until the write completes). -- 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