Skip to content

netty: out of memory error while uploading large files #399

@jknack

Description

@jknack

File upload is 1.8GB and Netty failed with this stacktrace:

Caused by: java.lang.OutOfMemoryError: Java heap space
    at io.netty.buffer.UnpooledHeapByteBuf.copy(UnpooledHeapByteBuf.java:473) ~[netty-buffer-4.1.0.CR7.jar:4.1.0.CR7]
    at io.netty.handler.codec.http.multipart.HttpPostMultipartRequestDecoder.readFileUploadByteMultipart(HttpPostMultipartRequestDecoder.java:1492) ~[netty-codec-http-4.1.0.CR7.jar:4.1.0.CR7]
    at io.netty.handler.codec.http.multipart.HttpPostMultipartRequestDecoder.getFileUpload(HttpPostMultipartRequestDecoder.java:902) ~[netty-codec-http-4.1.0.CR7.jar:4.1.0.CR7]
    at io.netty.handler.codec.http.multipart.HttpPostMultipartRequestDecoder.decodeMultipart(HttpPostMultipartRequestDecoder.java:563) ~[netty-codec-http-4.1.0.CR7.jar:4.1.0.CR7]
    at io.netty.handler.codec.http.multipart.HttpPostMultipartRequestDecoder.findMultipartDisposition(HttpPostMultipartRequestDecoder.java:804) ~[netty-codec-http-4.1.0.CR7.jar:4.1.0.CR7]
    at io.netty.handler.codec.http.multipart.HttpPostMultipartRequestDecoder.decodeMultipart(HttpPostMultipartRequestDecoder.java:501) ~[netty-codec-http-4.1.0.CR7.jar:4.1.0.CR7]
    at io.netty.handler.codec.http.multipart.HttpPostMultipartRequestDecoder.findMultipartDelimiter(HttpPostMultipartRequestDecoder.java:657) ~[netty-codec-http-4.1.0.CR7.jar:4.1.0.CR7]
    at io.netty.handler.codec.http.multipart.HttpPostMultipartRequestDecoder.decodeMultipart(HttpPostMultipartRequestDecoder.java:488) ~[netty-codec-http-4.1.0.CR7.jar:4.1.0.CR7]
    at io.netty.handler.codec.http.multipart.HttpPostMultipartRequestDecoder.parseBodyMultipart(HttpPostMultipartRequestDecoder.java:453) ~[netty-codec-http-4.1.0.CR7.jar:4.1.0.CR7]
    at io.netty.handler.codec.http.multipart.HttpPostMultipartRequestDecoder.parseBody(HttpPostMultipartRequestDecoder.java:422) ~[netty-codec-http-4.1.0.CR7.jar:4.1.0.CR7]
    at io.netty.handler.codec.http.multipart.HttpPostMultipartRequestDecoder.offer(HttpPostMultipartRequestDecoder.java:347) ~[netty-codec-http-4.1.0.CR7.jar:4.1.0.CR7]
    at io.netty.handler.codec.http.multipart.HttpPostMultipartRequestDecoder.<init>(HttpPostMultipartRequestDecoder.java:193) ~[netty-codec-http-4.1.0.CR7.jar:4.1.0.CR7]
    at io.netty.handler.codec.http.multipart.HttpPostRequestDecoder.<init>(HttpPostRequestDecoder.java:97) ~[netty-codec-http-4.1.0.CR7.jar:4.1.0.CR7]
    at io.netty.handler.codec.http.multipart.HttpPostRequestDecoder.<init>(HttpPostRequestDecoder.java:68) ~[netty-codec-http-4.1.0.CR7.jar:4.1.0.CR7]

There is an open bug at netty too: netty/netty#3559

If your app requires large file upload a better option for now is:

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions