[ https://issues.apache.org/jira/browse/KAFKA-6731?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Guozhang Wang resolved KAFKA-6731. ---------------------------------- Resolution: Fixed Fix Version/s: 1.2.0 > waitOnState waits for the wrong state instead of the target one > --------------------------------------------------------------- > > Key: KAFKA-6731 > URL: https://issues.apache.org/jira/browse/KAFKA-6731 > Project: Kafka > Issue Type: Bug > Components: streams > Reporter: huxihx > Assignee: huxihx > Priority: Major > Fix For: 1.2.0 > > > In KafkaStreams.waitOnState, the code waits the state to be set to > NOT_RUNNING instead of the given target state. Is it deliberately as designed? > {code:java} > // ...... > while (state != State.NOT_RUNNING) { > if (waitMs == 0) { > try { > stateLock.wait(); > } catch (final InterruptedException e) { > // it is ok: just move on to the next iteration > } > } else if (waitMs > elapsedMs) { > long remainingMs = waitMs - elapsedMs; > try { > stateLock.wait(remainingMs); > } catch (final InterruptedException e) { > // it is ok: just move on to the next iteration > } > } else { > log.debug("Cannot transit to {} within {}ms", targetState, waitMs); > return false; > } > elapsedMs = time.milliseconds() - begin; > } > return true; > {code} > IMO, it should check the state to be the target one. > [~guozhang] Does is make sense? -- This message was sent by Atlassian JIRA (v7.6.3#76005)