hc-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Sebb (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HTTPCLIENT-1742) No connection reuse if response is compressed
Date Wed, 11 May 2016 21:08:12 GMT

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

Sebb commented on HTTPCLIENT-1742:
----------------------------------

The change to drop the headers has caused a regression in deprecated code.
I think that *is* a bug in HC.
It could affect other apps that are still using deprecated code.
Whether it is worth fixing or not is another matter.
But at the very least it needs to be documented.

> No connection reuse if response is compressed
> ---------------------------------------------
>
>                 Key: HTTPCLIENT-1742
>                 URL: https://issues.apache.org/jira/browse/HTTPCLIENT-1742
>             Project: HttpComponents HttpClient
>          Issue Type: Bug
>          Components: HttpClient
>    Affects Versions: 4.5.2
>         Environment: Linux, Java 8
>            Reporter: Rainer Jung
>
> Trying current JMeter trunk I ran into a problem, that connections were not being reused.
Debugging into it revealed IMHO a HttpClient/HttpCore problem.
> Below you'll find a wire dump of the response headers:
> 2016/05/10 22:44:15 DEBUG - org.apache.http.wire:  << "HTTP/1.1 200 OK[\r][\n]"
> 2016/05/10 22:44:15 DEBUG - org.apache.http.wire:  << "Date: Tue, 10 May 2016 20:44:15
GMT[\r][\n]"
> 2016/05/10 22:44:15 DEBUG - org.apache.http.wire:  << "Server: Apache[\r][\n]"
> 2016/05/10 22:44:15 DEBUG - org.apache.http.wire:  << "Pragma: no-cache[\r][\n]"
> 2016/05/10 22:44:15 DEBUG - org.apache.http.wire:  << "Cache-Control: no-cache,
no-store, must-revalidate[\r][\n]"
> 2016/05/10 22:44:15 DEBUG - org.apache.http.wire:  << "Expires: 0[\r][\n]"
> 2016/05/10 22:44:15 DEBUG - org.apache.http.wire:  << "Pragma: no-cache[\r][\n]"
> 2016/05/10 22:44:15 DEBUG - org.apache.http.wire:  << "Cache-Control: no-cache,
no-store, must-revalidate[\r][\n]"
> 2016/05/10 22:44:15 DEBUG - org.apache.http.wire:  << "Expires: 0[\r][\n]"
> 2016/05/10 22:44:15 DEBUG - org.apache.http.wire:  << "Pragma: no-cache[\r][\n]"
> 2016/05/10 22:44:15 DEBUG - org.apache.http.wire:  << "Cache-Control: no-cache,
no-store, must-revalidate[\r][\n]"
> 2016/05/10 22:44:15 DEBUG - org.apache.http.wire:  << "Expires: 0[\r][\n]"
> 2016/05/10 22:44:15 DEBUG - org.apache.http.wire:  << "Vary: Accept-Encoding[\r][\n]"
> 2016/05/10 22:44:15 DEBUG - org.apache.http.wire:  << "Content-Encoding: gzip[\r][\n]"
> 2016/05/10 22:44:15 DEBUG - org.apache.http.wire:  << "X-Content-Type-Options:
nosniff[\r][\n]"
> 2016/05/10 22:44:15 DEBUG - org.apache.http.wire:  << "X-Frame-Options: sameorigin[\r][\n]"
> 2016/05/10 22:44:15 DEBUG - org.apache.http.wire:  << "Content-Length: 1194[\r][\n]"
> 2016/05/10 22:44:15 DEBUG - org.apache.http.wire:  << "Keep-Alive: timeout=60,
max=9999[\r][\n]"
> 2016/05/10 22:44:15 DEBUG - org.apache.http.wire:  << "Connection: Keep-Alive[\r][\n]"
> 2016/05/10 22:44:15 DEBUG - org.apache.http.wire:  << "Content-Type: text/html;charset=utf-8[\r][\n]"
> 2016/05/10 22:44:15 DEBUG - org.apache.http.wire:  << "[\r][\n]"
> 2016/05/10 22:44:15 DEBUG - org.apache.http.headers: << HTTP/1.1 200 OK
> 2016/05/10 22:44:15 DEBUG - org.apache.http.headers: << Date: Tue, 10 May 2016
20:44:15 GMT
> 2016/05/10 22:44:15 DEBUG - org.apache.http.headers: << Server: Apache
> 2016/05/10 22:44:15 DEBUG - org.apache.http.headers: << Pragma: no-cache
> 2016/05/10 22:44:15 DEBUG - org.apache.http.headers: << Cache-Control: no-cache,
no-store, must-revalidate
> 2016/05/10 22:44:15 DEBUG - org.apache.http.headers: << Expires: 0
> 2016/05/10 22:44:15 DEBUG - org.apache.http.headers: << Pragma: no-cache
> 2016/05/10 22:44:15 DEBUG - org.apache.http.headers: << Cache-Control: no-cache,
no-store, must-revalidate
> 2016/05/10 22:44:15 DEBUG - org.apache.http.headers: << Expires: 0
> 2016/05/10 22:44:15 DEBUG - org.apache.http.headers: << Pragma: no-cache
> 2016/05/10 22:44:15 DEBUG - org.apache.http.headers: << Cache-Control: no-cache,
no-store, must-revalidate
> 2016/05/10 22:44:15 DEBUG - org.apache.http.headers: << Expires: 0
> 2016/05/10 22:44:15 DEBUG - org.apache.http.headers: << Vary: Accept-Encoding
> 2016/05/10 22:44:15 DEBUG - org.apache.http.headers: << Content-Encoding: gzip
> 2016/05/10 22:44:15 DEBUG - org.apache.http.headers: << X-Content-Type-Options:
nosniff
> 2016/05/10 22:44:15 DEBUG - org.apache.http.headers: << X-Frame-Options: sameorigin
> 2016/05/10 22:44:15 DEBUG - org.apache.http.headers: << Content-Length: 1194
> 2016/05/10 22:44:15 DEBUG - org.apache.http.headers: << Keep-Alive: timeout=60,
max=9999
> 2016/05/10 22:44:15 DEBUG - org.apache.http.headers: << Connection: Keep-Alive
> 2016/05/10 22:44:15 DEBUG - org.apache.http.headers: << Content-Type: text/html;charset=utf-8
> As you can see, the response contains a Content-Length header, is not chunked but is
gzip compressed. The server sets a Connection header keep-alive and sends keep-alive values
that would let the connection be reused. But instead DefaultConnectionReuseStrategy.keepAlive()
returns false, because in the code block
>             if (canResponseHaveBody(response)) {
>                 final Header[] clhs = response.getHeaders(HTTP.CONTENT_LEN);
>                 // Do not reuse if not properly content-length delimited
>                 if (clhs.length == 1) {
> the value of clhs.length is 0. So although the wire dump shows a content-length header,
and the request is not chunked, somewhere the content-length header is being removed.
> As soon as I remove the "Accept-Encoding: gzip, deflate" request header, connections
get reused and the content-length header no longer gets removed.
> I expect the class ResponseContentEncoding to be responsible: it removes the header via
> response.removeHeaders("Content-Length");
> in line 141.
> Regards,
> Rainer



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@hc.apache.org
For additional commands, e-mail: dev-help@hc.apache.org


Mime
View raw message