You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@camel.apache.org by Vova Shelgunov <vv...@gmail.com> on 2016/12/07 15:37:31 UTC

OutOfMemoryError when upload file to jetty endpoint

Hi,

I am using Camel 2.18.1.

My configuration:

<route id="ds-rest-archive-upload-processor">
<from uri="jetty:
https://storage:8443/data/archive?sslContextParametersRef=sslContextParameters&amp;requestBufferSize=32768&amp;responseBufferSize=32768&amp;httpMethodRestrict=POST"
/>

<to uri="bean:uploadFromArchiveFileProcessor?method=process"
pattern="InOut" />

</route>

<bean id="jetty"
class="org.apache.camel.component.jetty9.JettyHttpComponent9">
<property name="endpointClass"
value="org.apache.camel.component.jetty9.JettyHttpEndpoint9" />
<property name="sslContextParameters" ref="sslContextParameters" />
<property name="useContinuation" value="true" />
<property name="requestBufferSize" value="32768" />
<property name="responseBufferSize" value="32768" />

<property name="threadPool">
<bean class="org.eclipse.jetty.util.thread.QueuedThreadPool">
<constructor-arg index="0" value="1000" />
</bean>
</property>

<property name="jettyHttpBinding">
<bean class="org.apache.camel.component.jetty.DefaultJettyHttpBinding">
<property name="transferException" value="false" />
</bean>
</property>
</bean>

When I uploaded file larger that heap size I got OutOfMemoryError:


2016-12-07 15:30:39,849 WARN  in
org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:667)
- Error for /data/archive
java.lang.OutOfMemoryError: Java heap space
java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOf(Arrays.java:3236)
at java.io.ByteArrayOutputStream.grow(ByteArrayOutputStream.java:118)
at
java.io.ByteArrayOutputStream.ensureCapacity(ByteArrayOutputStream.java:93)
at java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:135)
at
org.eclipse.jetty.util.MultiPartInputStreamParser$MultiPart.write(MultiPartInputStreamParser.java:116)
at
org.eclipse.jetty.util.MultiPartInputStreamParser.parse(MultiPartInputStreamParser.java:681)
at
org.eclipse.jetty.util.MultiPartInputStreamParser.getParts(MultiPartInputStreamParser.java:400)
at
org.eclipse.jetty.servlets.MultiPartFilter.doFilter(MultiPartFilter.java:170)
at
org.apache.camel.component.jetty.CamelFilterWrapper.doFilter(CamelFilterWrapper.java:43)
at
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
at
org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585)
at
org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)
at
org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)
at
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
at
org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
at org.eclipse.jetty.server.Server.handle(Server.java:499)
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:311)
at
org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257)
at
org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:544)
at
org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)
at
org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)
at java.lang.Thread.run(Thread.java:745)

Before version 2.18.1 I have had the issue from this ticket:

https://issues.apache.org/jira/browse/CAMEL-10399

Now I have another issue, but I did not expect that file will be loaded to
memory.

Could you please say what should I do to handle such files using camel?

Regards,
Uladzimir