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)