[
https://issues.apache.org/jira/browse/ZOOKEEPER-1715?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13679271#comment-13679271
]
Sean Bridges commented on ZOOKEEPER-1715:
-----------------------------------------
Doing some more debugging, the main test thread is blocked in
NettyServerCnxnFactory#shutdown at the call to,
bootstrap.releaseExternalResources();
That call is blocked trying to shut down an executor with 1 thread blocked
trying to acquire the lock on a NettyServerCnxn, with a stack trace like,
{code}
Name: New I/O worker #4
State: BLOCKED on org.apache.zookeeper.server.NettyServerCnxn@6827a180 owned
by: CommitProcWorkThread-1
Total blocked: 2 Total waited: 0
Stack trace:
org.apache.zookeeper.server.NettyServerCnxnFactory$CnxnChannelHandler.messageReceived(NettyServerCnxnFactory.java:141)
org.jboss.netty.channel.SimpleChannelHandler.handleUpstream(SimpleChannelHandler.java:88)
org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:558)
org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:553)
org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:268)
org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:255)
org.jboss.netty.channel.socket.nio.NioWorker.read(NioWorker.java:88)
org.jboss.netty.channel.socket.nio.AbstractNioWorker.processSelectedKeys(AbstractNioWorker.java:441)
org.jboss.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:328)
org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:36)
org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108)
org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
java.lang.Thread.run(Thread.java:722)
{code}
The lock is owned by another thread which is blocked trying to disableRcv with
a stack trace as shown,
{code}
Name: CommitProcWorkThread-1
State: WAITING on org.jboss.netty.channel.DefaultChannelFuture@405a6d04
Total blocked: 14 Total waited: 77
Stack trace:
at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:503)
org.jboss.netty.channel.DefaultChannelFuture.awaitUninterruptibly(DefaultChannelFuture.java:258)
org.apache.zookeeper.server.NettyServerCnxn.disableRecv(NettyServerCnxn.java:810)
org.apache.zookeeper.server.NettyServerCnxn.receiveMessage(NettyServerCnxn.java:742)
org.apache.zookeeper.server.NettyServerCnxnFactory$CnxnChannelHandler.processMessage(NettyServerCnxnFactory.java:164)
org.apache.zookeeper.server.NettyServerCnxnFactory$CnxnChannelHandler.messageReceived(NettyServerCnxnFactory.java:141)
- locked org.apache.zookeeper.server.NettyServerCnxn@6827a180
org.jboss.netty.channel.SimpleChannelHandler.handleUpstream(SimpleChannelHandler.java:88)
org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:558)
org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:553)
org.apache.zookeeper.server.NettyServerCnxn.enableRecv(NettyServerCnxn.java:207)
org.apache.zookeeper.server.NettyServerCnxn.sendResponse(NettyServerCnxn.java:190)
org.apache.zookeeper.server.FinalRequestProcessor.processRequest(FinalRequestProcessor.java:416)
org.apache.zookeeper.server.quorum.CommitProcessor$CommitWorkRequest.doWork(CommitProcessor.java:271)
org.apache.zookeeper.server.WorkerService$ScheduledWorkRequest.run(WorkerService.java:152)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
java.lang.Thread.run(Thread.java:722)
{code}
The attached patch fixes the test by adding a non blocking version of
disableRecv, but I am not sure that is a good approach.
> Upgrade netty version
> ---------------------
>
> Key: ZOOKEEPER-1715
> URL: https://issues.apache.org/jira/browse/ZOOKEEPER-1715
> Project: ZooKeeper
> Issue Type: Improvement
> Affects Versions: 3.4.5
> Environment: zookeeper 3.4.5 uses netty 3.2.2, which was released in
> August 2010. The latest version of netty is 3.6.6 released May 2013.
> Zookeeper should consider upgrading.
> Reporter: Sean Bridges
> Fix For: 3.5.0
>
> Attachments: ZOOKEEPER-1715-2.patch, ZOOKEEPER-1715.patch
>
>
--
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