Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

RestEasy Reactive Multipart response fails with files > 2GB #24472

Closed
michalszynkiewicz opened this issue Mar 22, 2022 · 2 comments · Fixed by #24477
Closed

RestEasy Reactive Multipart response fails with files > 2GB #24472

michalszynkiewicz opened this issue Mar 22, 2022 · 2 comments · Fixed by #24477
Labels
area/resteasy-reactive kind/bug Something isn't working
Milestone

Comments

@michalszynkiewicz
Copy link
Member

michalszynkiewicz commented Mar 22, 2022

Describe the bug

large response with file > 2GB fails

Expected behavior

No response

Actual behavior

An exception is thrown:

10:11:13,961 INFO  [app] 10:11:13,532 Request failed: java.lang.RuntimeException: java.lang.OutOfMemoryError: Required array length 2147483639 + 9 is too large
10:11:13,962 INFO  [app]        at org.jboss.resteasy.reactive.server.core.ServerSerialisers.invokeWriter(ServerSerialisers.java:242)
10:11:13,962 INFO  [app]        at org.jboss.resteasy.reactive.server.core.ServerSerialisers.invokeWriter(ServerSerialisers.java:178)
10:11:13,962 INFO  [app]        at org.jboss.resteasy.reactive.server.core.serialization.FixedEntityWriter.write(FixedEntityWriter.java:26)
10:11:13,962 INFO  [app]        at org.jboss.resteasy.reactive.server.handlers.ResponseWriterHandler.handle(ResponseWriterHandler.java:33)
10:11:13,962 INFO  [app]        at org.jboss.resteasy.reactive.server.handlers.ResponseWriterHandler.handle(ResponseWriterHandler.java:15)
10:11:13,962 INFO  [app]        at org.jboss.resteasy.reactive.common.core.AbstractResteasyReactiveContext.run(AbstractResteasyReactiveContext.java:141)
10:11:13,962 INFO  [app]        at io.quarkus.vertx.core.runtime.VertxCoreRecorder$13.runWith(VertxCoreRecorder.java:545)
10:11:13,962 INFO  [app]        at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2449)
10:11:13,962 INFO  [app]        at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1478)
10:11:13,962 INFO  [app]        at org.jboss.threads.DelegatingRunnable.run(DelegatingRunnable.java:29)
10:11:13,962 INFO  [app]        at org.jboss.threads.ThreadLocalResettingRunnable.run(ThreadLocalResettingRunnable.java:29)
10:11:13,962 INFO  [app]        at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
10:11:13,962 INFO  [app]        at java.base/java.lang.Thread.run(Thread.java:833)
10:11:13,962 INFO  [app] Caused by: java.lang.OutOfMemoryError: Required array length 2147483639 + 9 is too large
10:11:13,962 INFO  [app]        at java.base/jdk.internal.util.ArraysSupport.hugeLength(ArraysSupport.java:649)
10:11:13,963 INFO  [app]        at java.base/jdk.internal.util.ArraysSupport.newLength(ArraysSupport.java:642)
10:11:13,963 INFO  [app]        at java.base/java.io.ByteArrayOutputStream.ensureCapacity(ByteArrayOutputStream.java:100)
10:11:13,963 INFO  [app]        at java.base/java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:130)
10:11:13,963 INFO  [app]        at org.jboss.resteasy.reactive.common.providers.serialisers.FileBodyHandler.doWrite(FileBodyHandler.java:66)
10:11:13,963 INFO  [app]        at org.jboss.resteasy.reactive.common.providers.serialisers.FileBodyHandler.writeTo(FileBodyHandler.java:58)
10:11:13,963 INFO  [app]        at org.jboss.resteasy.reactive.common.providers.serialisers.FileBodyHandler.writeTo(FileBodyHandler.java:20)
10:11:13,963 INFO  [app]        at org.jboss.resteasy.reactive.server.core.multipart.MultipartMessageBodyWriter.serialiseEntity(MultipartMessageBodyWriter.java:133)
10:11:13,963 INFO  [app]        at org.jboss.resteasy.reactive.server.core.multipart.MultipartMessageBodyWriter.write(MultipartMessageBodyWriter.java:84)
10:11:13,963 INFO  [app]        at org.jboss.resteasy.reactive.server.core.multipart.MultipartMessageBodyWriter.writeMultiformData(MultipartMessageBodyWriter.java:57)
10:11:13,963 INFO  [app]        at org.jboss.resteasy.reactive.server.core.multipart.MultipartMessageBodyWriter.writeResponse(MultipartMessageBodyWriter.java:44)
10:11:13,963 INFO  [app]        at org.jboss.resteasy.reactive.server.core.ServerSerialisers.invokeWriter(ServerSerialisers.java:207)
10:11:13,963 INFO  [app]        ... 12 more

How to Reproduce?

git clone https://github.com/michalszynkiewicz/resteasy-reactive-large-multipart-failure
cd resteasy-reactive-large-multipart-failure
mvn clean install -Dtest=FileTest#downloadMultipart

Output of uname -a or ver

No response

Output of java -version

No response

GraalVM version (if different from Java)

No response

Quarkus version or git rev

main

Build tool (ie. output of mvnw --version or gradlew --version)

No response

Additional information

No response

@michalszynkiewicz michalszynkiewicz added the kind/bug Something isn't working label Mar 22, 2022
@quarkus-bot
Copy link

quarkus-bot bot commented Mar 22, 2022

/cc @FroMage, @geoand, @stuartwdouglas

@michalszynkiewicz
Copy link
Member Author

@Sgitario

Sgitario added a commit to Sgitario/quarkus that referenced this issue Mar 22, 2022
I've added tests for resteasy reactive and also resteasy reactive rest client. 

Fix quarkusio#24472
Sgitario added a commit to Sgitario/quarkus that referenced this issue Mar 23, 2022
I've added tests for resteasy reactive and also resteasy reactive rest client. 

Fix quarkusio#24472
@quarkus-bot quarkus-bot bot added this to the 2.9 - main milestone Mar 24, 2022
@gsmet gsmet modified the milestones: 2.9 - main, 2.8.0.Final Mar 28, 2022
gsmet pushed a commit to gsmet/quarkus that referenced this issue Mar 28, 2022
I've added tests for resteasy reactive and also resteasy reactive rest client.

Fix quarkusio#24472

(cherry picked from commit d7ae188)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/resteasy-reactive kind/bug Something isn't working
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants