[
https://issues.apache.org/jira/browse/ZOOKEEPER-1179?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13855274#comment-13855274
]
Rakesh R commented on ZOOKEEPER-1179:
-------------------------------------
Please have a look at NETTY-412, which is discussing the same scenario and is
still an open issue in the netty. Also, when fixing the zookeeper windows
build, this case has been again discovered and please see comments obout [test
case failure in ZOOKEEPER-1833 |
https://issues.apache.org/jira/browse/ZOOKEEPER-1833?focusedCommentId=13855267&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-13855267]
Please review the attached patch, where I skipped the duplicate closure in
CnxnChannelHandler#exceptionCaught. Thanks
> NettyServerCnxn does not properly close socket on 4 letter word requests
> ------------------------------------------------------------------------
>
> Key: ZOOKEEPER-1179
> URL: https://issues.apache.org/jira/browse/ZOOKEEPER-1179
> Project: ZooKeeper
> Issue Type: Bug
> Affects Versions: 3.4.0
> Reporter: Camille Fournier
> Assignee: Rakesh R
> Fix For: 3.4.6, 3.5.0
>
> Attachments: ZOOKEEPER-1179.patch
>
>
> When calling a 4-letter-word to a server configured to use
> NettyServerCnxnFactory, the factory will not properly cancel all the keys and
> close the socket after sending the response for the 4lw. The close request
> will throw this exception, and the thread will not shut down:
> 2011-09-13 12:14:17,546 - WARN [New I/O server worker
> #1-1:NettyServerCnxnFactory$CnxnChannelHandler@117] - Exception caught [id:
> 0x009300cc, /1.1.1.1:38542 => /139.172.114.138:2181] EXCEPTION:
> java.io.IOException: A non-blocking socket operation could not be completed
> immediately
> java.io.IOException: A non-blocking socket operation could not be completed
> immediately
> at sun.nio.ch.SocketDispatcher.close0(Native Method)
> at sun.nio.ch.SocketDispatcher.preClose(SocketDispatcher.java:44)
> at
> sun.nio.ch.SocketChannelImpl.implCloseSelectableChannel(SocketChannelImpl.java:684)
> at
> java.nio.channels.spi.AbstractSelectableChannel.implCloseChannel(AbstractSelectableChannel.java:201)
> at
> java.nio.channels.spi.AbstractInterruptibleChannel.close(AbstractInterruptibleChannel.java:97)
> at
> org.jboss.netty.channel.socket.nio.NioWorker.close(NioWorker.java:593)
> at
> org.jboss.netty.channel.socket.nio.NioServerSocketPipelineSink.handleAcceptedSocket(NioServerSocketPipelineSink.java:119)
> at
> org.jboss.netty.channel.socket.nio.NioServerSocketPipelineSink.eventSunk(NioServerSocketPipelineSink.java:76)
> at org.jboss.netty.channel.Channels.close(Channels.java:720)
> at
> org.jboss.netty.channel.AbstractChannel.close(AbstractChannel.java:208)
> at
> org.apache.zookeeper.server.NettyServerCnxn.close(NettyServerCnxn.java:116)
> at
> org.apache.zookeeper.server.NettyServerCnxn.cleanupWriterSocket(NettyServerCnxn.java:241)
> at
> org.apache.zookeeper.server.NettyServerCnxn.access$0(NettyServerCnxn.java:231)
> at
> org.apache.zookeeper.server.NettyServerCnxn$CommandThread.run(NettyServerCnxn.java:314)
> at
> org.apache.zookeeper.server.NettyServerCnxn$CommandThread.start(NettyServerCnxn.java:305)
> at
> org.apache.zookeeper.server.NettyServerCnxn.checkFourLetterWord(NettyServerCnxn.java:674)
> at
> org.apache.zookeeper.server.NettyServerCnxn.receiveMessage(NettyServerCnxn.java:791)
> at
> org.apache.zookeeper.server.NettyServerCnxnFactory$CnxnChannelHandler.processMessage(NettyServerCnxnFactory.java:217)
> at
> org.apache.zookeeper.server.NettyServerCnxnFactory$CnxnChannelHandler.messageReceived(NettyServerCnxnFactory.java:141)
> at
> org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:274)
> at
> org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:261)
> at org.jboss.netty.channel.socket.nio.NioWorker.read(NioWorker.java:350)
> at
> org.jboss.netty.channel.socket.nio.NioWorker.processSelectedKeys(NioWorker.java:281)
> at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:201)
> at
> org.jboss.netty.util.internal.IoWorkerRunnable.run(IoWorkerRunnable.java:46)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
> at java.lang.Thread.run(Thread.java:619)
--
This message was sent by Atlassian JIRA
(v6.1.5#6160)