Matthias J. Sax created KAFKA-16221:
---------------------------------------

             Summary: IllegalStateException from Producer
                 Key: KAFKA-16221
                 URL: https://issues.apache.org/jira/browse/KAFKA-16221
             Project: Kafka
          Issue Type: Bug
          Components: streams
    Affects Versions: 3.6.0
            Reporter: Matthias J. Sax


https://issues.apache.org/jira/browse/KAFKA-14831 fixed a producer bug about 
internal TX state transition and the producer is now throwing an 
IllegalStateException in situations it did swallow an internal error before.

This change surfaces a bug in Kafka Streams: Kafka Streams calls 
`abortTransaction()` blindly when a task is closed dirty, even if the Producer 
is already in an internal fatal state. However, if the Producer is in a fatal 
state, Kafka Streams should skip `abortTransaction` and only `close()` the 
Producer when closing a task dirty.

If the Producer throws an IllegalStateException on `abortTransaction()` Kafka 
Streams treats this exception ("correctly") as fatal, and StreamsThread dies. 
However, Kafka Streams is actually in a state in which it can recover from, and 
thus should not let StreamThread die by carry forward (by not calling 
`abortTransaction()` and moving forward with the dirty close of the task).



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to