[ 
https://issues.apache.org/jira/browse/CAMEL-24234?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18097956#comment-18097956
 ] 

John Yin commented on CAMEL-24234:
----------------------------------

Please note this happened when 
org.apache.camel.springboot:camel-platform-http-starter is used.

> camel-http throws ZipException: Not in GZIP format against any 
> gzip-compressing server with default settings
> ------------------------------------------------------------------------------------------------------------
>
>                 Key: CAMEL-24234
>                 URL: https://issues.apache.org/jira/browse/CAMEL-24234
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-http
>    Affects Versions: 4.18.3
>         Environment: * {*}Environment{*}: Camel 4.18.3, {{camel-http}} 
> (HttpClient 5 backend), Java 25 (in Spring Boot 3.5.16)
>            Reporter: John Yin
>            Priority: Major
>
> * {*}Steps to reproduce{*}: minimal route {{.to("https://www.google.com";)}} 
> with no special config
>  * {*}Expected{*}: response is returned successfully (compression should be 
> transparent by default)
>  * {*}Actual{*}: 
> java.util.zip.ZipException: Not in GZIP format
> at 
> java.base/java.util.zip.GZIPInputStream.readHeader(GZIPInputStream.java:231)
> at java.base/java.util.zip.GZIPInputStream.<init>(GZIPInputStream.java:86)
> at java.base/java.util.zip.GZIPInputStream.<init>(GZIPInputStream.java:118)
> at org.apache.camel.support.GZIPHelper.uncompressGzip(GZIPHelper.java:41)
> at 
> org.apache.camel.component.http.HttpProducer.extractResponseBody(HttpProducer.java:543)
> at 
> org.apache.camel.component.http.HttpProducer.populateResponse(HttpProducer.java:363)
> at 
> org.apache.camel.component.http.HttpProducer.lambda$process$1(HttpProducer.java:277)
> at 
> org.apache.camel.component.http.HttpProducer.executeMethod(HttpProducer.java:500)
> at org.apache.camel.component.http.HttpProducer.process(HttpProducer.java:253)
> at 
> org.apache.camel.support.AsyncProcessorConverterHelper$ProcessorToAsyncProcessorBridge.process(AsyncProcessorConverterHelper.java:65)
> at 
> org.apache.camel.processor.SendProcessor.sendUsingProducer(SendProcessor.java:253)
> at org.apache.camel.processor.SendProcessor.process(SendProcessor.java:158)
> at 
> org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$RedeliveryTask.doRun(RedeliveryErrorHandler.java:1105)
> at 
> org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$RedeliveryTask.run(RedeliveryErrorHandler.java:1048)
> at 
> org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.doRun(DefaultReactiveExecutor.java:199)
> at 
> org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.executeReactiveWork(DefaultReactiveExecutor.java:189)
> at 
> org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.tryExecuteReactiveWork(DefaultReactiveExecutor.java:166)
> at 
> org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(DefaultReactiveExecutor.java:148)
> at 
> org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleMain(DefaultReactiveExecutor.java:59)
> at org.apache.camel.processor.Pipeline.process(Pipeline.java:162)
> at 
> org.apache.camel.impl.engine.CamelInternalProcessor.processNonTransacted(CamelInternalProcessor.java:385)
> at 
> org.apache.camel.impl.engine.CamelInternalProcessor.process(CamelInternalProcessor.java:361)
> at 
> org.apache.camel.component.timer.TimerConsumer.sendTimerExchange(TimerConsumer.java:293)
> at 
> org.apache.camel.component.timer.TimerConsumer$1.doRun(TimerConsumer.java:164)
> at 
> org.apache.camel.component.timer.TimerConsumer$1.run(TimerConsumer.java:136)
> at java.base/java.util.TimerThread.mainLoop(Timer.java:579)
> at java.base/java.util.TimerThread.run(Timer.java:529).
>  * *Root cause* (worth including — reviewers move faster on well-diagnosed 
> reports): HttpClient5 auto-decompresses by default but leaves the 
> {{Content-Encoding: gzip}} response header in place; {{HttpProducer}} doesn't 
> check whether decompression already happened before re-attempting it via 
> {{GZIPHelper}}
>  * {*}Workaround found{*}: {{contentCompressionDisabled=true}} on the 
> component avoids the double-decompression, but this isn't documented as a 
> _required_ setting anywhere, and it's non-obvious that leaving compression at 
> its default is what breaks things
>  * {*}Suggested fix direction{*}: either (a) {{HttpProducer}} should check 
> whether the entity was already decompressed by HttpClient5 before invoking 
> {{{}GZIPHelper{}}}, or (b) the component docs should clearly state that 
> {{contentCompressionDisabled=true}} is effectively required for correct 
> behavior against compressing servers, or (c) default 
> {{contentCompressionDisabled}} to {{true}} so Camel's own handling is the 
> sole decompression path



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to