hc-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Oleg Kalnichevski (JIRA)" <j...@apache.org>
Subject [jira] [Resolved] (HTTPCLIENT-1857) HttpClient falsely closes a reusable connection
Date Tue, 20 Jun 2017 08:38:00 GMT

     [ https://issues.apache.org/jira/browse/HTTPCLIENT-1857?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel

Oleg Kalnichevski resolved HTTPCLIENT-1857.
    Resolution: Invalid

bq. The pool checks if the inputstream was read all the way to the end

The connection pool is unaware (and should not be aware) of message delineation. This is a
job of a protocol handler.

HttpClient has multiple connection release triggers. {{CloseableHttpResponse}} is the last
trigger that gets activated only if in case of an exception or in case of a partial response
consumption. In the normal course of response processing the prorocol handler wraps the response
{{InputStream}} with a proxy that triggers release of the underlying connection gets released
once the end of message stream has been reached. In that case {{CloseableHttpResponse#close}}
essentially has no effect.


> HttpClient falsely closes a reusable connection
> -----------------------------------------------
>                 Key: HTTPCLIENT-1857
>                 URL: https://issues.apache.org/jira/browse/HTTPCLIENT-1857
>             Project: HttpComponents HttpClient
>          Issue Type: Bug
>            Reporter: Rodolfo Udo Labsch
>         Attachments: ConnectionHolder.patch
> If you create a code with a reusable httpclient and then call execute as in the example
with the following code. The http connection will be falsely closed.
> {code:java}
> private PoolingHttpClientConnectionManager connectionManager = new PoolingHttpClientConnectionManager();
> httpClient = HttpClients.custom()
> .setConnectionManager(connectionManager)
> .build();
> try (CloseableHttpResponse response = httpClient.execute(new HttpGet(enetLink), context))
> .....
> }
> {code}
> The reason being that we have:
> {code:java}
> CloseableHttpResponse:
>     public void close() throws IOException {
>         if (this.connHolder != null) {
>             this.connHolder.close();
>         }
>     }
> ConnectionHolder:
>     public void close() throws IOException {
>         releaseConnection(false);
>     }
> {code}
> Just created the correction, which is attached as patch.

This message was sent by Atlassian JIRA

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

View raw message