Uploaded image for project: 'Kafka'
  1. Kafka
  2. KAFKA-8726

Producer can't abort a transaction aftersome send errors

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Open
    • Priority: Major
    • Resolution: Unresolved
    • Affects Version/s: 2.3.0
    • Fix Version/s: None
    • Component/s: clients, producer
    • Labels:
      None

      Description

      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.

        Attachments

          Activity

            People

            • Assignee:
              Unassigned
              Reporter:
              mbarbon Mattia Barbon
            • Votes:
              0 Vote for this issue
              Watchers:
              5 Start watching this issue

              Dates

              • Created:
                Updated: