[ https://issues.apache.org/jira/browse/KAFKA-9398?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17013676#comment-17013676 ]
Dongjin Lee commented on KAFKA-9398: ------------------------------------ Other related one: https://issues.apache.org/jira/browse/KAFKA-7996 Please refer to the comment of 12 Mar 2019. As of now, we can't specify the producer close timeout in Kafka Streams and it may hang up. How do you think? If you agree, I am eager to rebase to the latest trunk and reopen the discussion thread. cc/ [~mjsax] > Kafka Streams main thread may not exit even after close timeout has passed > -------------------------------------------------------------------------- > > Key: KAFKA-9398 > URL: https://issues.apache.org/jira/browse/KAFKA-9398 > Project: Kafka > Issue Type: Improvement > Components: streams > Reporter: Bill Bejeck > Assignee: Bill Bejeck > Priority: Critical > Fix For: 2.5.0 > > > Kafka Streams offers the KafkaStreams.close() method when shutting down a > Kafka Streams application. There are two overloads to this method, one that > takes no parameters and another taking a Duration specifying how long the > close() method should block waiting for streams shut down operations to > complete. The no-arg version of close() sets the timeout to Long.MAX_VALUE. > The issue is that if a StreamThread is taking to long to complete or if one > of the Consumer or Producer clients is in a hung state, the Kafka Streams > application won't exit even after the specified timeout has expired. > For example, consider this scenario: > # A sink topic gets deleted by accident > # The user sets Producer max.block.ms config to a high value > In this case, the Producer will issue a WARN logging statement and will > continue to make metadata requests looking for the expected topic. The > {{Producer}} will continue making metadata requests up until the max.block.ms > expires. If this value is high enough, calling close() with a timeout won't > fix the issue as when the timeout expires, the Kafka Streams application's > main thread won't exit. > To prevent this type of issue, we should call Thread.interrupt() on all > StreamThread instances once the close() timeout has expired. -- This message was sent by Atlassian Jira (v8.3.4#803005)