OutOfMemory exception with Multi-Part Zero Copy

137 views
Skip to first unread message

volts

unread,
Aug 31, 2011, 10:27:26 AM8/31/11
to asynchttpclient
Hello,
I'm trying to upload a big file with multipart/form-data request.

AsyncHttpClient.BoundRequestBuilder request =
asyncHttpClient.preparePost("http://postservice");
Part p1 = new FilePart(filename, new File(filename), type, "binary");
Part p2 = new StringPart("importantparam", "param");
request.addBodyPart(p1);
request.addBodyPart(p2);
try{

Future<Response> f = request.execute();
Response r = f.get();
}
and received Out of Memory exception.
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at
org.jboss.netty.buffer.HeapChannelBuffer.<init>(HeapChannelBuffer.java:
47)
at
org.jboss.netty.buffer.BigEndianHeapChannelBuffer.<init>(BigEndianHeapChannelBuffer.java:
39)
at org.jboss.netty.buffer.ChannelBuffers.buffer(ChannelBuffers.java:
139)
at
org.jboss.netty.buffer.HeapChannelBufferFactory.getBuffer(HeapChannelBufferFactory.java:
73)
at
org.jboss.netty.buffer.DynamicChannelBuffer.ensureWritableBytes(DynamicChannelBuffer.java:
84)
at
org.jboss.netty.buffer.DynamicChannelBuffer.writeBytes(DynamicChannelBuffer.java:
233)
at
org.jboss.netty.buffer.ChannelBufferOutputStream.write(ChannelBufferOutputStream.java:
72)
at com.ning.http.multipart.FilePart.sendData(FilePart.java:186)
at com.ning.http.multipart.Part.send(Part.java:304)
at com.ning.http.multipart.Part.sendParts(Part.java:374)
at
com.ning.http.multipart.MultipartRequestEntity.writeRequest(MultipartRequestEntity.java:
116)
at
com.ning.http.client.providers.netty.NettyAsyncHttpProvider.construct(NettyAsyncHttpProvider.java:
647)
at
com.ning.http.client.providers.netty.NettyAsyncHttpProvider.buildRequest(NettyAsyncHttpProvider.java:
453)
at com.ning.http.client.providers.netty.NettyConnectListener
$Builder.build(NettyConnectListener.java:122)
at
com.ning.http.client.providers.netty.NettyAsyncHttpProvider.doConnect(NettyAsyncHttpProvider.java:
773)
at
com.ning.http.client.providers.netty.NettyAsyncHttpProvider.execute(NettyAsyncHttpProvider.java:
708)
at
com.ning.http.client.AsyncHttpClient.executeRequest(AsyncHttpClient.java:
476)
at com.ning.http.client.AsyncHttpClient
$BoundRequestBuilder.execute(AsyncHttpClient.java:231)

Is there another way I should make multipart request?
I found out that someone has been already reported about this issue
https://issues.sonatype.org/browse/AHC-78
and it's marked as fixed in 1.6.4, but it's still reproduced on fresh
async-client-1.6.4 version .
Is there any patch available?

Jeanfrancois Arcand

unread,
Sep 18, 2011, 9:05:59 PM9/18/11
to asyncht...@googlegroups.com
Salut,

try 1.7.0 SNAPSHOT, which contains the fix IIRC. Let me know if that is
not the case.

Thanks

-- Jeanfrancois

Reply all
Reply to author
Forward
0 new messages