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)