[ https://issues.apache.org/jira/browse/KAFKA-5818?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16149726#comment-16149726 ]
ASF GitHub Bot commented on KAFKA-5818: --------------------------------------- GitHub user mjsax opened a pull request: https://github.com/apache/kafka/pull/3775 KAFKA-5818: KafkaStreams state transitions not correct - need to check that state is CRATED at startup - some minor test cleanup You can merge this pull request into a Git repository by running: $ git pull https://github.com/mjsax/kafka kafka-5818-kafkaStreams-state-transition Alternatively you can review and apply these changes as the patch at: https://github.com/apache/kafka/pull/3775.patch To close this pull request, make a commit to your master/trunk branch with (at least) the following in the commit message: This closes #3775 ---- commit 0ab4a2a15bf895ea7fdbfc476897dafa0717a1ae Author: Matthias J. Sax <matth...@confluent.io> Date: 2017-08-31T22:38:48Z KAFKA-5818: KafkaStreams state transitions not correct ---- > KafkaStreams state transitions not correct > ------------------------------------------ > > Key: KAFKA-5818 > URL: https://issues.apache.org/jira/browse/KAFKA-5818 > Project: Kafka > Issue Type: Bug > Components: streams > Affects Versions: 0.11.0.1, 1.0.0 > 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)