Hi,

Are you responding with IN message without removing headers? You may want to 
add headerFilterStrategy to filter unnecessary headers from response.

Thanks,
Tomo

On 11/21/2016 12:36 AM, Vova Shelgunov wrote:
Hi,

I have application with the following jetty 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
 
<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>

*I am sending a file to this endpoint.
When exception happens inside UploadFromArchiveFileProcessor.process I see the 
following warning **in the log**:*

2016-11-20 14:15:30,630 WARN  in 
org.eclipse.jetty.server.HttpChannel$CommitCallback.failed(HttpChannel.java:858)
 - Commit failed
java.io.IOException: Response header too large
at org.eclipse.jetty.http.HttpGenerator.generateResponse(HttpGenerator.java:402)
at 
org.eclipse.jetty.server.HttpConnection$SendCallback.process(HttpConnection.java:655)
at 
org.eclipse.jetty.util.IteratingCallback.processing(IteratingCallback.java:246)
at org.eclipse.jetty.util.IteratingCallback.iterate(IteratingCallback.java:208)
at org.eclipse.jetty.server.HttpConnection.send(HttpConnection.java:471)
at org.eclipse.jetty.server.HttpChannel.sendResponse(HttpChannel.java:763)
at org.eclipse.jetty.server.HttpChannel.write(HttpChannel.java:801)
at org.eclipse.jetty.server.HttpOutput.write(HttpOutput.java:147)
at org.eclipse.jetty.server.HttpOutput.write(HttpOutput.java:140)
at org.eclipse.jetty.server.HttpOutput.write(HttpOutput.java:383)
at java.io.ByteArrayOutputStream.writeTo(ByteArrayOutputStream.java:167)
at org.eclipse.jetty.server.Utf8HttpWriter.write(Utf8HttpWriter.java:183)
at org.eclipse.jetty.server.HttpWriter.write(HttpWriter.java:71)
at java.io.PrintWriter.write(PrintWriter.java:456)
at java.io.PrintWriter.write(PrintWriter.java:473)
at java.io.PrintWriter.print(PrintWriter.java:603)
at 
org.apache.camel.http.common.DefaultHttpBinding.doWriteDirectResponse(DefaultHttpBinding.java:506)
at 
org.apache.camel.http.common.DefaultHttpBinding.doWriteResponse(DefaultHttpBinding.java:390)
at 
org.apache.camel.http.common.DefaultHttpBinding.writeResponse(DefaultHttpBinding.java:322)
at 
org.apache.camel.component.jetty.CamelContinuationServlet.doService(CamelContinuationServlet.java:227)
at org.apache.camel.http.common.CamelServlet.service(CamelServlet.java:74)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:812)
at 
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1669)
at 
org.apache.camel.component.jetty.CamelFilterWrapper.doFilter(CamelFilterWrapper.java:45)
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.handleAsync(Server.java:549)
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:318)
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257)
at org.eclipse.jetty.io 
<http://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)
Caused by: java.nio.BufferOverflowException
at java.nio.Buffer.nextPutIndex(Buffer.java:521)
at java.nio.HeapByteBuffer.put(HeapByteBuffer.java:169)
at 
org.eclipse.jetty.http.HttpGenerator.putSanitisedValue(HttpGenerator.java:1066)
at org.eclipse.jetty.http.HttpGenerator.putTo(HttpGenerator.java:1088)
at org.eclipse.jetty.http.HttpGenerator.generateHeaders(HttpGenerator.java:705)
at org.eclipse.jetty.http.HttpGenerator.generateResponse(HttpGenerator.java:387)
... 38 more

*When an exception does not occur and I do not add the following code to 
finally block of process method, I will see the same exception and route will 
fail.*

message.removeHeader(attachment.getName());

*I tried to debug HttpGenerator.generateHeaders and see that inside 
_info._httpFields there are following fields:*


​
I do not know what file from the request is doing here, but it is strange at 
least.

Could you please say how to avoid such exceptions?
Also strange thing that file content is stored in memory, so I am not able to 
upload large file.

Reply via email to