[ https://issues.apache.org/jira/browse/KAFKA-749?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13571067#comment-13571067 ]
Sriram Subramanian commented on KAFKA-749: ------------------------------------------ Took a look at this. 1. This adds another layer of locking to the Request queue which in itself is a Blocking queue implementation. This does not seem very efficient. Either we implement our blocking queue or use the api. 2. Having said that, it seems a lot easier to just purge the queue. Is this not an option? 3. If 2 is not possible, a more elegant way is to use the poison pill approach. We shutdown the socket server, and enqueue a shutdown request to the queue. Each request handler thread dequeues the request, checks it is is shutdown request, if so re-queues it and exits. > Bug in socket server shutdown logic makes the broker hang on shutdown until > it has to be killed > ----------------------------------------------------------------------------------------------- > > Key: KAFKA-749 > URL: https://issues.apache.org/jira/browse/KAFKA-749 > Project: Kafka > Issue Type: Bug > Components: network > Affects Versions: 0.8 > Reporter: Neha Narkhede > Assignee: Neha Narkhede > Priority: Blocker > Labels: bugs, p1 > Attachments: kafka-749-v1.patch > > Original Estimate: 24h > Remaining Estimate: 24h > > The current shutdown logic of the server shuts down the io threads first, > followed by acceptor and finally processor threads. The shutdown API of io > threads enqueues a special AllDone command into the common request queue. It > shuts down the io thread when it dequeues this special all done command. What > can happen is that while this shutdown command processing is happening on the > io threads, the network/processor threads can still accept new connections > and requests and will add those new requests to the request queue. That > means, more requests can be enqueued after the AllDone command. What happens > is that after the io threads have shutdown, there is no thread available to > dequeue from the request queue. So the processor threads can hang while > adding new requests to a full request queue, thereby blocking the server from > shutting down. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira