[
https://issues.apache.org/jira/browse/CAMEL-13886?focusedWorklogId=311850&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-311850
]
ASF GitHub Bot logged work on CAMEL-13886:
------------------------------------------
Author: ASF GitHub Bot
Created on: 13/Sep/19 02:28
Start Date: 13/Sep/19 02:28
Worklog Time Spent: 10m
Work Description: tadayosi commented on pull request #3166: CAMEL-13886:
camel-servlet + camel-http4 with null body causes "Stream closed" IOException
URL: https://github.com/apache/camel/pull/3166
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]
Issue Time Tracking
-------------------
Worklog Id: (was: 311850)
Time Spent: 20m (was: 10m)
> camel-servlet + camel-http4 with null body causes "Stream closed" IOException
> -----------------------------------------------------------------------------
>
> Key: CAMEL-13886
> URL: https://issues.apache.org/jira/browse/CAMEL-13886
> Project: Camel
> Issue Type: Bug
> Components: camel-http-common, camel-http4, camel-servlet
> Affects Versions: 2.25.0, 3.0.0.M4
> Reporter: Tadayoshi Sato
> Assignee: Tadayoshi Sato
> Priority: Major
> Time Spent: 20m
> Remaining Estimate: 0h
>
> A Rest DSL route like the following causes {{java.io.IOException: Stream
> closed}} when invoked at http://localhost:8000/test/proxy:
> {code:java}
> rest("/test")
> .get("/proxy")
> .to("direct:callInternalRestService");
> from("direct:callInternalRestService")
> .setHeader(Exchange.HTTP_METHOD, constant("DELETE"))
> //.setBody(constant("")) // workaround for null body and
> http4 component
> .to("http4://localhost:9000/test?bridgeEndpoint=true")
> .log("${body}");
> {code}
> The error stacktrace:
> {code}
> Caused by: java.io.IOException: Stream closed
> at org.apache.catalina.connector.InputBuffer.read(InputBuffer.java:372)
> at
> org.apache.catalina.connector.CoyoteInputStream.read(CoyoteInputStream.java:156)
> at org.apache.camel.util.IOHelper.copy(IOHelper.java:202)
> at org.apache.camel.util.IOHelper.copy(IOHelper.java:174)
> at org.apache.camel.util.IOHelper.copyAndCloseInput(IOHelper.java:234)
> at org.apache.camel.util.IOHelper.copyAndCloseInput(IOHelper.java:230)
> at
> org.apache.camel.http.common.HttpHelper.readResponseBodyFromInputStream(HttpHelper.java:245)
> at
> org.apache.camel.http.common.HttpHelper.readRequestBodyFromServletRequest(HttpHelper.java:196)
> at
> org.apache.camel.http.common.DefaultHttpBinding.parseBody(DefaultHttpBinding.java:577)
> at
> org.apache.camel.http.common.HttpMessage.createBody(HttpMessage.java:78)
> ... 54 common frames omitted
> {code}
> -This seems to happen only when Tomcat is used as the container with Spring
> Boot. Undertow doesn't cause such an issue.-
> The real root cause is that when an exchange has an {{HttpMessage}} with
> {{null}} body as its out message, then the next time
> {{Exchange.getMessage()}} is invoked the {{HttpMessage}} is tricked by the
> {{null}} body and tries to create body again with the already closed request
> input stream.
--
This message was sent by Atlassian Jira
(v8.3.2#803003)