Karthik S
Karthik S

Reputation: 137

When is java.io.IOException: Connection reset by peer thrown with Netty?

When I send a request to a webserver using netty. I get the following exception. What can cause this exception ?

java.io.IOException: Connection reset by peer
        at sun.nio.ch.FileDispatcherImpl.read0(Native Method) ~[na:1.7.0_25]
        at sun.nio.ch.SocketDispatcher.read(Unknown Source) ~[na:1.7.0_25]
        at sun.nio.ch.IOUtil.readIntoNativeBuffer(Unknown Source) ~[na:1.7.0_25]
        at sun.nio.ch.IOUtil.read(Unknown Source) ~[na:1.7.0_25]
        at sun.nio.ch.SocketChannelImpl.read(Unknown Source) ~[na:1.7.0_25]
        at io.netty.buffer.UnpooledHeapByteBuf.setBytes(UnpooledHeapByteBuf.java:237) ~[netty-all-4.0.6.Final.jar:na]
        at io.netty.buffer.AbstractByteBuf.writeBytes(AbstractByteBuf.java:867) ~[netty-all-4.0.6.Final.jar:na]
        at io.netty.channel.socket.nio.NioSocketChannel.doReadBytes(NioSocketChannel.java:227) ~[netty-all-4.0.6.Final.jar:na]
        at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:87) ~[netty-all-4.0.6.Final.jar:na]
        at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:497) ~[netty-all-4.0.6.Final.jar:na]
        at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:465) ~[netty-all-4.0.6.Final.jar:na]
        at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:359) ~[netty-all-4.0.6.Final.jar:na]
        at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:101) ~[netty-all-4.0.6.Final.jar:na]
        at java.lang.Thread.run(Unknown Source) ~[na:1.7.0_25]

Upvotes: 4

Views: 18886

Answers (2)

Appz
Appz

Reputation: 59

Try check and catch exception before read. It helped me rid of that exception.

// Attempt to read off the channel
        int numRead;
        try {
            numRead = socketChannel.read(this.readBuffer);
        } catch (IOException e) {
            // The remote forcibly closed the connection, cancel
            // the selection key and close the channel.
            key.cancel();
            socketChannel.close();
            return;
        }

Upvotes: -2

user207421
user207421

Reputation: 310909

The usual cause of this error is that you have written to a connection which had already been closed by the other end. In other words, an application protocol error. There are other causes, but this is the most common.

NB Netty has nothing to do with it.

Upvotes: 6

Related Questions