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