[
https://issues.apache.org/jira/browse/KAFKA-8726?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17040906#comment-17040906
]
Matthias J. Sax commented on KAFKA-8726:
----------------------------------------
>From my understanding the behavior is by design. If the producer is in an
>internal error state, you can only `close()` it.
To resume, you would create a new producer instance. Using the same
`transactional.id` the pending transaction would be aborted when you call
`initTransaction()` on the new producer (otherwise, as you mentioned, the
transaction would eventually time out and be aborted by the broker eventually).
\cc [~bob-barrett] please correct me if I am wrong.
> Producer can't abort a transaction aftersome send errors
> --------------------------------------------------------
>
> Key: KAFKA-8726
> URL: https://issues.apache.org/jira/browse/KAFKA-8726
> Project: Kafka
> Issue Type: Bug
> Components: clients, producer
> Affects Versions: 2.3.0
> Reporter: Mattia Barbon
> Priority: Major
>
> I am following the producer with transactions example in
> [https://kafka.apache.org/23/javadoc/org/apache/kafka/clients/producer/KafkaProducer.html,]
> and on kafkaException, I use abortTransaction and retry.
>
> In some cases, abortTransaction fails, with:
> ```
> org.apache.kafka.common.KafkaException: Cannot execute transactional method
> because we are in an error state
> ```
> as far as I can tell, this is caused by
> ```
> org.apache.kafka.common.KafkaException: The client hasn't received
> acknowledgment for some previously sent messages and can no longer retry
> them. It isn't safe to continue.
> ```
>
> Since both are KafkaException, the example seems to imply they are retriable,
> but they seem not to be. Ideally, I would expect abortTransaction to succeed
> in this case (the broker will abort the transaction anyway because it can't
> be committed), but at the very least, I would expect to have a way to
> determine that the producer is unusable and it can't recover.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)