Skip to content

Instantly share code, notes, and snippets.

@sigbjod
Created September 23, 2013 17:43
Show Gist options
  • Save sigbjod/6674241 to your computer and use it in GitHub Desktop.
Save sigbjod/6674241 to your computer and use it in GitHub Desktop.
java.io.IOException caught while using a RandomAccessFile object for the 2nd time in Netty
private void finish(ChannelHandlerContext channel, HttpResponse response,
RandomAccessFile gif, String contentType) {
ChannelFuture future = null;
try {
long fileLength = gif.length();
response.headers().set(CONTENT_LENGTH, fileLength);
response.headers().set(CONTENT_TYPE, contentType);
future = channel.write(response);
DefaultFileRegion region = new DefaultFileRegion(gif.getChannel(), 0,
fileLength);
future = channel.writeAndFlush(region);
future.addListener(ChannelFutureListener.CLOSE);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
java.io.IOException: Stream Closed
at java.io.RandomAccessFile.length(Native Method)
at com.fiftyfive.ubik.netty.HttpGetRequestHandler.finish(HttpGetRequestHandler.java:159)
at com.fiftyfive.ubik.netty.HttpGetRequestHandler.channelRead(HttpGetRequestHandler.java:122)
at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:337)
at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:323)
at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103)
at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:337)
at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:323)
at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103)
at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:337)
at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:323)
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:173)
at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:337)
at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:323)
at com.fiftyfive.common.netty.ResponseTimeLoggerHandler.channelRead(ResponseTimeLoggerHandler.java:39)
at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:337)
at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:323)
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:785)
at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:100)
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:478)
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:447)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:341)
at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:101)
at java.lang.Thread.run(Thread.java:724)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment