You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@zookeeper.apache.org by "Michi Mutsuzaki (JIRA)" <ji...@apache.org> on 2014/02/12 02:19:25 UTC

[jira] [Resolved] (ZOOKEEPER-1179) NettyServerCnxn does not properly close socket on 4 letter word requests

     [ https://issues.apache.org/jira/browse/ZOOKEEPER-1179?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Michi Mutsuzaki resolved ZOOKEEPER-1179.
----------------------------------------

      Resolution: Fixed
    Release Note: Thanks Rakesh, you are right, this error is not happening anymore. Flavio, I'm closing this.

> 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
>          Components: server
>    Affects Versions: 3.4.0
>            Reporter: Camille Fournier
>            Assignee: Rakesh R
>            Priority: Critical
>             Fix For: 3.4.6, 3.5.0
>
>         Attachments: ZOOKEEPER-1179.patch, ZOOKEEPER-1179.patch, 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)