k-raina commented on code in PR #19522: URL: https://github.com/apache/kafka/pull/19522#discussion_r2069651376
########## clients/src/main/java/org/apache/kafka/clients/producer/internals/TransactionManager.java: ########## @@ -1073,6 +1074,11 @@ private void transitionTo(State target, RuntimeException error) { } else if (target == State.FATAL_ERROR || target == State.ABORTABLE_ERROR) { if (error == null) throw new IllegalArgumentException("Cannot transition to " + target + " with a null exception"); + + if (error instanceof RetriableException) { + error = new TransactionAbortableException("Transaction Request was aborted after exhausting retries.", error); + } + Review Comment: @jolshan IIUC, Following is codepath which handles Retriable exceptions as Abortable 1. SenderThread calls TM.handleFailedBatch() after retries are exhausted [[Code Link](https://github.com/k-raina/kafka/blob/90e7b53799ce0e5cd9a79cec03e5db6ef5643391/clients/src/main/java/org/apache/kafka/clients/producer/internals/Sender.java#L667-L688)] 2. TM.handleFailedBatch() calls TM.maybeTransitionToErrorState() which checks for exception types and calls TM.transitionToAbortableError() for non fatal type exceptions 3. Finally TM.transitionToAbortableError calls TM.transitionTo(State.ABORTABLE_ERROR, ..) which sets state as Abortable -- 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