Multiple use of Camel LogProcessor does not work as expected with camel-http4 consumer endpoint
Issue
If there are multiple camel LogProcessor after camel-http4 consumer endpoint, 2nd LogProcessor throws TypeConversionException.
camel route
<route id="_route2">
<from id="_to1" uri="timer:timerName?repeatCount=1"/>
<to id="_to2" uri="http4://localhost:9000/demo/1?disableStreamCache=true&bridgeEndpoint=true"/>
<log id="_log1" message="Read body 1st time: ${body}"/>
<log id="_log2" message="Read body 2nd time: ${body}"/>
</route>
log
[ Blueprint Event Dispatcher: 1] BlueprintCamelContext INFO Apache Camel 2.21.0.fuse-760027-redhat-00001 (CamelContext: _context1) started in 0.667 seconds
[ thread #4 - timer://timerName] _route2 INFO Read body 1st time: "3000"
[ thread #4 - timer://timerName] DefaultErrorHandler ERROR Failed delivery for (MessageId: ID-unused-220-201-nrt-redhat-com-1594771676451-0-4 on ExchangeId: ID-unused-220-201-nrt-redhat-com-1594771676451-0-1). Exhausted after delivery attempt: 1 caught: org.apache.camel.TypeConversionException: Error during type conversion from type: java.lang.String to the required type: java.lang.String with value [Body is instance of java.io.InputStream] due Attempted read on closed stream.
Message History
---------------------------------------------------------------------------------------------------------------------------------------
RouteId ProcessorId Processor Elapsed (ms)
[_route2 ] [_route2 ] [timer://timerName?repeatCount=1 ] [ 378]
[_route2 ] [_to2 ] [http4://localhost:9000/demo/1?disableStreamCache=true&bridgeEndpoint=true ] [ 375]
[_route2 ] [_log1 ] [log ] [ 0]
[_route2 ] [_log2 ] [log ] [ 1]
Stacktrace
---------------------------------------------------------------------------------------------------------------------------------------
org.apache.camel.TypeConversionException: Error during type conversion from type: java.lang.String to the required type: java.lang.String with value [Body is instance of java.io.InputStream] due Attempted read on closed stream.
at org.apache.camel.impl.converter.BaseTypeConverterRegistry.createTypeConversionException(BaseTypeConverterRegistry.java:667)
at org.apache.camel.impl.converter.BaseTypeConverterRegistry.convertTo(BaseTypeConverterRegistry.java:158)
at org.apache.camel.core.osgi.OsgiTypeConverter.convertTo(OsgiTypeConverter.java:120)
at org.apache.camel.support.ExpressionAdapter.evaluate(ExpressionAdapter.java:41)
at org.apache.camel.builder.ExpressionBuilder$76.evaluate(ExpressionBuilder.java:1836)
at org.apache.camel.support.ExpressionAdapter.evaluate(ExpressionAdapter.java:36)
at org.apache.camel.processor.LogProcessor.process(LogProcessor.java:64)
at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:548)
at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:201)
at org.apache.camel.processor.Pipeline.process(Pipeline.java:138)
at org.apache.camel.processor.Pipeline.process(Pipeline.java:101)
at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:201)
at org.apache.camel.component.timer.TimerConsumer.sendTimerExchange(TimerConsumer.java:197)
at org.apache.camel.component.timer.TimerConsumer$1.run(TimerConsumer.java:79)
at java.util.TimerThread.mainLoop(Timer.java:555)
at java.util.TimerThread.run(Timer.java:505)
Caused by: java.io.IOException: Attempted read on closed stream.
at org.apache.http.conn.EofSensorInputStream.isReadAllowed(EofSensorInputStream.java:107)
at org.apache.http.conn.EofSensorInputStream.read(EofSensorInputStream.java:133)
at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:284)
at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:326)
at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:178)
at java.io.InputStreamReader.read(InputStreamReader.java:184)
at java.io.BufferedReader.fill(BufferedReader.java:161)
at java.io.BufferedReader.read1(BufferedReader.java:212)
at java.io.BufferedReader.read(BufferedReader.java:286)
at java.io.Reader.read(Reader.java:140)
at org.apache.camel.converter.IOConverter.toString(IOConverter.java:303)
at org.apache.camel.converter.IOConverter.toString(IOConverter.java:293)
at org.apache.camel.converter.IOConverter.toString(IOConverter.java:350)
at org.apache.camel.converter.IOConverterOptimised.convertTo(IOConverterOptimised.java:118)
at org.apache.camel.impl.converter.OptimisedTypeConverter.convertTo(OptimisedTypeConverter.java:63)
at org.apache.camel.impl.converter.BaseTypeConverterRegistry.doConvertTo(BaseTypeConverterRegistry.java:300)
at org.apache.camel.impl.converter.BaseTypeConverterRegistry.convertTo(BaseTypeConverterRegistry.java:141)
... 14 more
Environment
- Red Hat Fuse 7
Subscriber exclusive content
A Red Hat subscription provides unlimited access to our knowledgebase, tools, and much more.