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-1237) PoolingClientConnectionManager should only update pool expiry for resuable connections
Date Wed, 26 Sep 2012 08:26:09 GMT

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

Oleg Kalnichevski resolved HTTPCLIENT-1237.
-------------------------------------------

       Resolution: Fixed
    Fix Version/s: 4.2.2

Patch checked in. Many thanks, Alf, for contributing it.

Oleg
                
> PoolingClientConnectionManager should only update pool expiry for resuable connections
> --------------------------------------------------------------------------------------
>
>                 Key: HTTPCLIENT-1237
>                 URL: https://issues.apache.org/jira/browse/HTTPCLIENT-1237
>             Project: HttpComponents HttpClient
>          Issue Type: Improvement
>            Reporter: Alf H√łgemark
>            Priority: Minor
>              Labels: patch
>             Fix For: 4.2.2
>
>         Attachments: 1237.txt
>
>
> When a HTTP 1.1 web server respons with a "Connection: close", the connection cannot
be reused, and therefore it is not needed to update the "expiry time" for the connection in
the pool.
> Avoiding updating the expiry will also mean that we do not get somewhat confusing log
messages like this for such a connection :
> "
> 2012/09/25 19:16:55:845 CEST [DEBUG] PoolingClientConnectionManager - Connection [id:
2][route: {}->http://alf-quad:37442] can be kept alive for 9223372036854775807 MILLISECONDS
> "
> I was testing against a web server which does not allow keep alive, so then I thought
the pool was incorrectly reusing the connection when I saw this log line while debugging a
connection related problem.
> So I think the following change is correct :
> Index: src/main/java/org/apache/http/impl/conn/PoolingClientConnectionManager.java
> ===================================================================
> --- src/main/java/org/apache/http/impl/conn/PoolingClientConnectionManager.java	(revision
1389988)
> +++ src/main/java/org/apache/http/impl/conn/PoolingClientConnectionManager.java	(working
copy)
> @@ -261,15 +261,18 @@
>                          }
>                      }
>                  }
> -                entry.updateExpiry(keepalive, tunit != null ? tunit : TimeUnit.MILLISECONDS);
> -                if (this.log.isDebugEnabled()) {
> -                    String s;
> -                    if (keepalive > 0) {
> -                        s = "for " + keepalive + " " + tunit;
> -                    } else {
> -                        s = "indefinitely";
> +                // Only reusable connections can be kept alive
> +                if(managedConn.isMarkedReusable()) {
> +                    entry.updateExpiry(keepalive, tunit != null ? tunit : TimeUnit.MILLISECONDS);
> +                    if (this.log.isDebugEnabled()) {
> +                        String s;
> +                        if (keepalive > 0) {
> +                            s = "for " + keepalive + " " + tunit;
> +                        } else {
> +                            s = "indefinitely";
> +                        }
> +                        this.log.debug("Connection " + format(entry) + " can be kept
alive " + s);
>                      }
> -                    this.log.debug("Connection " + format(entry) + " can be kept alive
" + s);
>                  }
>              } finally {
>                  this.pool.release(entry, managedConn.isMarkedReusable());

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

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


Mime
View raw message