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


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 is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to