You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@camel.apache.org by "Omar Atie (Jira)" <ji...@apache.org> on 2026/07/23 22:30:00 UTC
[jira] [Comment Edited] (CAMEL-24234) camel-http throws ZipException: Not in GZIP format against any gzip-compressing server with default settings
[ https://issues.apache.org/jira/browse/CAMEL-24234?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18098600#comment-18098600 ]
Omar Atie edited comment on CAMEL-24234 at 7/23/26 10:29 PM:
-------------------------------------------------------------
Yes, Done
was (Author: JIRAUSER313980):
Yes
> 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
> Assignee: Omar Atie
> Priority: Major
> Fix For: 4.18.4, 4.22.0
>
>
> * {*}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)