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

             Summary: Kafka Stream state transitions not correct
                 Key: KAFKA-5818
                 URL: https://issues.apache.org/jira/browse/KAFKA-5818
             Project: Kafka
          Issue Type: Bug
          Components: streams
            Reporter: Matthias J. Sax
            Assignee: Matthias J. Sax


There is a race condition revealed by failing test 
{{KafkaStreamsTest#testCannotStartTwise}}. It fails with:

{noformat}
java.lang.Exception: Unexpected exception, 
expected<java.lang.IllegalStateException> but 
was<java.lang.IllegalThreadStateException>

Caused by: java.lang.IllegalThreadStateException
        at java.lang.Thread.start(Thread.java:705)
        at org.apache.kafka.streams.KafkaStreams.start(KafkaStreams.java:590)
        at 
org.apache.kafka.streams.KafkaStreamsTest.testCannotStartTwice(KafkaStreamsTest.java:251)
{noformat}

The race condition is a follows:

1) test calls {{KafkaStreams#start()}} for the first time and state transits 
from CREATED -> RUNNING
2) First poll triggers a rebalance and {{StreamThread}} put {{KafkaStreams}} 
into state REBALANCING
3) before REBALANCING completes, the main test thread calls 
{{KafkaStream#start()}} again. As current state is REBALANCING, the transition 
to RUNNING is valid and {{start()}} does not fail with 
{{IllegalStateException}} but resumes. When it tries to start internal streams, 
we get {{IllegalThreadStateException}} as thread are already running.





--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to