camel-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Christoph Läubrich (JIRA) <j...@apache.org>
Subject [jira] [Created] (CAMEL-10577) Jetty9-Component only supports payloads up hardcoded limit (2MB)
Date Thu, 08 Dec 2016 14:06:58 GMT
Christoph Läubrich created CAMEL-10577:
------------------------------------------

             Summary: Jetty9-Component only supports payloads up hardcoded limit (2MB)
                 Key: CAMEL-10577
                 URL: https://issues.apache.org/jira/browse/CAMEL-10577
             Project: Camel
          Issue Type: Bug
          Components: camel-jetty
            Reporter: Christoph Läubrich


Camel-Jetty9 uses [BufferingResponseListener|http://download.eclipse.org/jetty/9.3.12.v20160915/apidocs/org/eclipse/jetty/client/util/BufferingResponseListener.html]
without any arguments when retriving content from URLs.

This leads to the problem that you can retrive a maximum of 2MiB from a server, e.g. the following
code{noformat}public void configure() throws Exception {

                from("timer://test?repeatCount=1")
                .log("Start download...")
                .to("jetty:http://mirror.netcologne.de/apache.org/camel/apache-camel/2.18.1/apache-camel-2.18.1.zip")
                .log("Download done!");

            }{noformat}
leads to
{noformat}org.apache.camel.CamelExchangeException: JettyClient failed cause by: Buffering
capacity exceeded. Exchange[ID-laeubi4core-60072-1481204922807-0-2]. Caused by: [java.lang.IllegalArgumentException
- Buffering capacity exceeded]
	at org.apache.camel.component.jetty9.JettyContentExchange9.doTaskCompleted(JettyContentExchange9.java:156)
	at org.apache.camel.component.jetty9.JettyContentExchange9$2.onComplete(JettyContentExchange9.java:222)
	at org.eclipse.jetty.client.ResponseNotifier.notifyComplete(ResponseNotifier.java:193)
	at org.eclipse.jetty.client.ResponseNotifier.notifyComplete(ResponseNotifier.java:185)
	at org.eclipse.jetty.client.HttpReceiver.terminateResponse(HttpReceiver.java:456)
	at org.eclipse.jetty.client.HttpReceiver.terminateResponse(HttpReceiver.java:437)
	at org.eclipse.jetty.client.HttpReceiver.responseHeaders(HttpReceiver.java:280)
	at org.eclipse.jetty.client.http.HttpReceiverOverHTTP.headerComplete(HttpReceiverOverHTTP.java:230)
	at org.eclipse.jetty.http.HttpParser.parseHeaders(HttpParser.java:1038)
	at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:1266)
	at org.eclipse.jetty.client.http.HttpReceiverOverHTTP.parse(HttpReceiverOverHTTP.java:158)
	at org.eclipse.jetty.client.http.HttpReceiverOverHTTP.process(HttpReceiverOverHTTP.java:119)
	at org.eclipse.jetty.client.http.HttpReceiverOverHTTP.receive(HttpReceiverOverHTTP.java:69)
	at org.eclipse.jetty.client.http.HttpChannelOverHTTP.receive(HttpChannelOverHTTP.java:90)
	at org.eclipse.jetty.client.http.HttpConnectionOverHTTP.onFillable(HttpConnectionOverHTTP.java:114)
	at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:273)
	at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)
	at org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:93)
	at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:246)
	at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:156)
	at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)
	at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)
	at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.IllegalArgumentException: Buffering capacity exceeded
	at org.eclipse.jetty.client.util.BufferingResponseListener.onHeaders(BufferingResponseListener.java:75)
	at org.eclipse.jetty.client.ResponseNotifier.notifyHeaders(ResponseNotifier.java:103)
	at org.eclipse.jetty.client.ResponseNotifier.notifyHeaders(ResponseNotifier.java:95)
	at org.eclipse.jetty.client.HttpReceiver.responseHeaders(HttpReceiver.java:259)
	... 16 more{noformat}

The maximum size should at least be configurable (even though it is not recommended to do
so since it seem to reserve the full buffer space on each request then).
It might be even better to use [InputStreamResponseListener|http://download.eclipse.org/jetty/9.3.12.v20160915/apidocs/org/eclipse/jetty/client/util/InputStreamResponseListener.html]
instead to place an input stream in the body.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message