hc-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Charles Lip (JIRA)" <j...@apache.org>
Subject [jira] [Created] (HTTPCLIENT-1609) Implementation of validate() Required In CPool
Date Wed, 11 Feb 2015 02:14:12 GMT
Charles Lip created HTTPCLIENT-1609:

             Summary: Implementation of validate() Required In CPool
                 Key: HTTPCLIENT-1609
                 URL: https://issues.apache.org/jira/browse/HTTPCLIENT-1609
             Project: HttpComponents HttpClient
          Issue Type: Bug
          Components: HttpClient
    Affects Versions: 4.4 Final
            Reporter: Charles Lip

In httpclient-4.4, org.apache.http.impl.conn.CPool directly inherits the dummy method validate()
from abstract class org.apache.http.pool.AbstractConnPool:-

/** * @since 4.4 */
protected boolean validate(final E entry)
{ return true; }

Given that validate() always return TRUE, a critical portion of codes related to "closing
stale connection" in method AbstractConnPool .getPoolEntryBlocking() is rendered unreachable.

Snippet of codes showing the unreachable part of method AbstractConnPool .getPoolEntryBlocking():
else if (this.validateAfterInactivity > 0) {
   if (entry.getUpdated() + this.validateAfterInactivity <=   System.currentTimeMillis())
      if (!validate(entry)) {
         entry.close(); //unreachable
... ..

PoolingHttpClientConnectionManager, which is supported by CPool, is impaired by this defect
for stale connection management logics involving validateAfterInactivity property.

CPool class needs a proper implementation of method validate(); a possible fix would be:

protected boolean validate(final CPoolEntry entry) {
 return !entry.getConnection().isStale();

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