[ https://issues.apache.org/jira/browse/KAFKA-6383?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Rohan Desai reopened KAFKA-6383: -------------------------------- I missed a race condition in my fix. If we start and then shutdown a streams thread without the streams thread running in between, then shutdown() throws an IllegalThreadStateException. This happens because shutdown() uses StreamThread.state to decide whether to call start(), and the state is transitioned from run which may not have executed yet. > StreamThread.shutdown doesn't clean up completely when called before > StreamThread.start > --------------------------------------------------------------------------------------- > > Key: KAFKA-6383 > URL: https://issues.apache.org/jira/browse/KAFKA-6383 > Project: Kafka > Issue Type: Bug > Components: streams > Affects Versions: 1.0.0 > Reporter: Rohan Desai > Assignee: Rohan Desai > Fix For: 1.1.0 > > > The following code leaks a producer network thread: > {code} > ks = new KafkaStreams(...); > ks.close(); > {code} > The underlying issue is that KafkaStreams creates a bunch of StreamsThreads > via StreamThread.create, which in turn creates a bunch of stuff (including a > producer). These resources are cleaned up only when the thread exits. So if > the thread was never started, then they are never cleaned up. > StreamThread.shutdown should clean up if it sees that the thread has never > been started. -- This message was sent by Atlassian JIRA (v6.4.14#64029)