Hi

Enable spool on stream caching
https://camel.apache.org/manual/stream-caching.html


On Tue, May 6, 2025 at 4:37 AM KARTHIK PRABHU N <karthikprabh...@gmail.com>
wrote:

> Hello Team,
>
> Good morning & hope you are doing fine !
>
> I am working on a use-case / concept to generate, download and upload very
> large file ( > 1GB file size <100GB) should support both binary and
> non-binary file type. To achieve this concept, I tried Camel’s File or
> Stream component to read / write file as stream and REST component that
> plugins to servlet component which exposes routes as REST endpoint.
>
>
>
> The download route designed to searches for given file and once found,
> streams the data to target file location ( intermediate step we can ignore)
>  as well as http response body. While testing the route using curl tool, we
> observed multiple issues as listed below.
>
>
>
>    1. Route streams data to client perfectly unless the file size <= 2GB,
>    beyond this size the route will throw below error. The exception clearly
>    indicates that JVM is trying to allocate an array with the size of about
>    2.13 GB and java arrays are limited to max size of array index around 2GB .
>    I tried to understand how streams work internally but somehow, I am lost.
>    Could you please assist how I can handle this scenario may be read and
>    publish data as chucks ?
>
>
>
>
> *java.lang.OutOfMemoryError: Required array length 2147483639 + 9 is too
> large at
> java.base/jdk.internal.util.ArraysSupport.hugeLength(ArraysSupport.java:649)
> *
>
> *at
> java.base/jdk.internal.util.ArraysSupport.newLength(ArraysSupport.java:642)
> *
>
> *at
> java.base/java.io.ByteArrayOutputStream.ensureCapacity(ByteArrayOutputStream.java:100)
> *
>
> *at
> java.base/java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:130)*
>
> *at
> org.apache.camel.converter.stream.CachedOutputStream.write(CachedOutputStream.java:108)
> *
>
> *at java.base/java.io.InputStream.transferTo(InputStream.java:783) at
> org.apache.camel.util.IOHelper.copy(IOHelper.java:165)*
>
>
>
>
>
>    2. How to increase the download rate ? As the file size is large, the
>    total time taken to complete the download is very long. I tried with higher
>    buffer range for file component & max response size in the servlet consumer
>    level but didn’t work.
>
>
>
>
>
>
>
> Could you please assist. Let us know if you need more details form myside.
>
>
>
> Thank you,
>
> Karthik Prabhu
>
>
>
>
>

-- 
Claus Ibsen
-----------------
@davsclaus
Camel in Action 2: https://www.manning.com/ibsen2

Reply via email to