kafka-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Rohan Desai (JIRA)" <j...@apache.org>
Subject [jira] [Reopened] (KAFKA-6383) StreamThread.shutdown doesn't clean up completely when called before StreamThread.start
Date Tue, 02 Jan 2018 22:03:00 GMT

     [ 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)

Mime
View raw message