Uploaded image for project: 'Camel'
  1. Camel
  2. CAMEL-20938

camel-http - Using disableStreamCache=true cannot read body later due to stream closed

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Minor
    • Resolution: Fixed
    • None
    • 4.4.4, 4.8.0
    • camel-http
    • None
    • Unknown

    Description

      Reported in mailing list.

      2024-07-03 08:47:26.061  WARN 30864 --- [ - timer://test] ache.camel.component.timer.TimerConsumer : Error processing exchange. Exchange[8164CC526FF834E-0000000000000000]. Caused by: [org.apache.camel.TypeConversionException - Error during type conversion from type: org.apache.hc.client5.http.entity.LazyDecompressingInputStream to the required type: java.lang.String with value org.apache.hc.client5.http.entity.LazyDecompressingInputStream@6f9df776 due to java.io.IOException: Attempted read on closed stream.]
      org.apache.camel.TypeConversionException: Error during type conversion from type: org.apache.hc.client5.http.entity.LazyDecompressingInputStream to the required type: java.lang.String with value org.apache.hc.client5.http.entity.LazyDecompressingInputStream@6f9df776 due to java.io.IOException: Attempted read on closed stream.
      	at org.apache.camel.converter.CamelBaseBulkConverterLoader.convertTo(CamelBaseBulkConverterLoader.java:65) ~[camel-base-4.7.0-SNAPSHOT.jar:4.7.0-SNAPSHOT]
      	at org.apache.camel.spi.BulkTypeConverters.convertTo(BulkTypeConverters.java:122) ~[camel-api-4.7.0-SNAPSHOT.jar:4.7.0-SNAPSHOT]
      	at org.apache.camel.impl.converter.CoreTypeConverterRegistry.tryCachedConverters(CoreTypeConverterRegistry.java:416) ~[camel-base-4.7.0-SNAPSHOT.jar:4.7.0-SNAPSHOT]
      	at org.apache.camel.impl.converter.CoreTypeConverterRegistry.doConvertTo(CoreTypeConverterRegistry.java:375) ~[camel-base-4.7.0-SNAPSHOT.jar:4.7.0-SNAPSHOT]
      	at org.apache.camel.impl.converter.CoreTypeConverterRegistry.doConvertToAndStat(CoreTypeConverterRegistry.java:269) ~[camel-base-4.7.0-SNAPSHOT.jar:4.7.0-SNAPSHOT]
      	at org.apache.camel.impl.converter.CoreTypeConverterRegistry.convertTo(CoreTypeConverterRegistry.java:164) ~[camel-base-4.7.0-SNAPSHOT.jar:4.7.0-SNAPSHOT]
      	at org.apache.camel.support.ExpressionAdapter.evaluate(ExpressionAdapter.java:52) ~[camel-support-4.7.0-SNAPSHOT.jar:4.7.0-SNAPSHOT]
      	at org.apache.camel.support.builder.ExpressionBuilder$62.evaluate(ExpressionBuilder.java:2105) ~[camel-support-4.7.0-SNAPSHOT.jar:4.7.0-SNAPSHOT]
      	at org.apache.camel.support.ExpressionAdapter.evaluate(ExpressionAdapter.java:45) ~[camel-support-4.7.0-SNAPSHOT.jar:4.7.0-SNAPSHOT]
      	at org.apache.camel.processor.LogProcessor.process(LogProcessor.java:71) ~[camel-core-processor-4.7.0-SNAPSHOT.jar:4.7.0-SNAPSHOT]
      	at org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$SimpleTask.handleFirst(RedeliveryErrorHandler.java:440) ~[camel-core-processor-4.7.0-SNAPSHOT.jar:4.7.0-SNAPSHOT]
      	at org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$SimpleTask.run(RedeliveryErrorHandler.java:416) ~[camel-core-processor-4.7.0-SNAPSHOT.jar:4.7.0-SNAPSHOT]
      	at org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.doRun(DefaultReactiveExecutor.java:199) [camel-base-engine-4.7.0-SNAPSHOT.jar:4.7.0-SNAPSHOT]
      	at org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.executeReactiveWork(DefaultReactiveExecutor.java:189) [camel-base-engine-4.7.0-SNAPSHOT.jar:4.7.0-SNAPSHOT]
      	at org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.tryExecuteReactiveWork(DefaultReactiveExecutor.java:166) [camel-base-engine-4.7.0-SNAPSHOT.jar:4.7.0-SNAPSHOT]
      	at org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(DefaultReactiveExecutor.java:148) [camel-base-engine-4.7.0-SNAPSHOT.jar:4.7.0-SNAPSHOT]
      	at org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleMain(DefaultReactiveExecutor.java:59) [camel-base-engine-4.7.0-SNAPSHOT.jar:4.7.0-SNAPSHOT]
      	at org.apache.camel.processor.Pipeline.process(Pipeline.java:163) [camel-core-processor-4.7.0-SNAPSHOT.jar:4.7.0-SNAPSHOT]
      	at org.apache.camel.impl.engine.CamelInternalProcessor.processNonTransacted(CamelInternalProcessor.java:346) [camel-base-engine-4.7.0-SNAPSHOT.jar:4.7.0-SNAPSHOT]
      	at org.apache.camel.impl.engine.CamelInternalProcessor.process(CamelInternalProcessor.java:322) [camel-base-engine-4.7.0-SNAPSHOT.jar:4.7.0-SNAPSHOT]
      	at org.apache.camel.component.timer.TimerConsumer.sendTimerExchange(TimerConsumer.java:293) [camel-timer-4.7.0-SNAPSHOT.jar:4.7.0-SNAPSHOT]
      	at org.apache.camel.component.timer.TimerConsumer$1.doRun(TimerConsumer.java:164) [camel-timer-4.7.0-SNAPSHOT.jar:4.7.0-SNAPSHOT]
      	at org.apache.camel.component.timer.TimerConsumer$1.run(TimerConsumer.java:136) [camel-timer-4.7.0-SNAPSHOT.jar:4.7.0-SNAPSHOT]
      	at java.base/java.util.TimerThread.mainLoop(Timer.java:566) [?:?]
      	at java.base/java.util.TimerThread.run(Timer.java:516) [?:?]
      Caused by: java.io.IOException: Attempted read on closed stream.
      	at org.apache.hc.core5.http.io.EofSensorInputStream.isReadAllowed(EofSensorInputStream.java:107) ~[httpcore5-5.2.4.jar:5.2.4]
      	at org.apache.hc.core5.http.io.EofSensorInputStream.read(EofSensorInputStream.java:116) ~[httpcore5-5.2.4.jar:5.2.4]
      	at java.base/java.util.zip.CheckedInputStream.read(CheckedInputStream.java:59) ~[?:?]
      	at java.base/java.util.zip.GZIPInputStream.readUByte(GZIPInputStream.java:266) ~[?:?]
      	at java.base/java.util.zip.GZIPInputStream.readUShort(GZIPInputStream.java:258) ~[?:?]
      	at java.base/java.util.zip.GZIPInputStream.readHeader(GZIPInputStream.java:164) ~[?:?]
      	at java.base/java.util.zip.GZIPInputStream.<init>(GZIPInputStream.java:79) ~[?:?]
      	at java.base/java.util.zip.GZIPInputStream.<init>(GZIPInputStream.java:91) ~[?:?]
      	at org.apache.hc.client5.http.entity.GZIPInputStreamFactory.create(GZIPInputStreamFactory.java:61) ~[httpclient5-5.2.1.jar:5.2.1]
      	at org.apache.hc.client5.http.entity.LazyDecompressingInputStream.initWrapper(LazyDecompressingInputStream.java:51) ~[httpclient5-5.2.1.jar:5.2.1]
      	at org.apache.hc.client5.http.entity.LazyDecompressingInputStream.read(LazyDecompressingInputStream.java:69) ~[httpclient5-5.2.1.jar:5.2.1]
      	at java.base/sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:270) ~[?:?]
      	at java.base/sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:313) ~[?:?]
      	at java.base/sun.nio.cs.StreamDecoder.read(StreamDecoder.java:188) ~[?:?]
      	at java.base/java.io.InputStreamReader.read(InputStreamReader.java:177) ~[?:?]
      	at java.base/java.io.BufferedReader.fill(BufferedReader.java:162) ~[?:?]
      	at java.base/java.io.BufferedReader.read1(BufferedReader.java:213) ~[?:?]
      	at java.base/java.io.BufferedReader.read(BufferedReader.java:287) ~[?:?]
      	at java.base/java.io.Reader.read(Reader.java:250) ~[?:?]
      	at org.apache.camel.util.IOHelper.toString(IOHelper.java:144) ~[camel-util-4.7.0-SNAPSHOT.jar:4.7.0-SNAPSHOT]
      	at org.apache.camel.util.IOHelper.toString(IOHelper.java:128) ~[camel-util-4.7.0-SNAPSHOT.jar:4.7.0-SNAPSHOT]
      	at org.apache.camel.util.IOHelper.toString(IOHelper.java:124) ~[camel-util-4.7.0-SNAPSHOT.jar:4.7.0-SNAPSHOT]
      	at org.apache.camel.converter.IOConverter.toString(IOConverter.java:186) ~[camel-base-4.7.0-SNAPSHOT.jar:4.7.0-SNAPSHOT]
      	at org.apache.camel.converter.IOConverter.toString(IOConverter.java:201) ~[camel-base-4.7.0-SNAPSHOT.jar:4.7.0-SNAPSHOT]
      	at org.apache.camel.converter.CamelBaseBulkConverterLoader.doConvertTo(CamelBaseBulkConverterLoader.java:345) ~[camel-base-4.7.0-SNAPSHOT.jar:4.7.0-SNAPSHOT]
      	at org.apache.camel.converter.CamelBaseBulkConverterLoader.convertTo(CamelBaseBulkConverterLoader.java:56) ~[camel-base-4.7.0-SNAPSHOT.jar:4.7.0-SNAPSHOT]
      	... 24 more
      

      When running

      import org.apache.camel.Exchange;
      
      public class HttpBug extends org.apache.camel.builder.RouteBuilder {
      
          @Override
          public void configure() throws Exception {
              getContext().getTypeConverterRegistry();
      
              //@formatter:off
              from("timer:test?repeatCount=1")
                  .setHeader(Exchange.HTTP_METHOD, constant("GET"))
                  .setHeader(Exchange.HTTP_URI, constant("https://camel.apache.org/components/4.4.x/http-component.html"))
                  .to("http:myHttpRequest?disableStreamCache=true")
                  .log("body : ${body}")
              .end();
              //@formatter:on
          }
      }
      

      Attachments

        1. image-2024-07-26-14-34-59-635.png
          79 kB
          Ryan Ikhlef
        2. image-2024-07-26-14-36-27-046.png
          63 kB
          Ryan Ikhlef
        3. image-2024-07-26-14-36-58-094.png
          21 kB
          Ryan Ikhlef

        Issue Links

          Activity

            People

              davsclaus Claus Ibsen
              davsclaus Claus Ibsen
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: