In httpclient-4.4, org.apache.http.impl.conn.CPool now 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 negatively impacted by this defect.

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

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




---------------------------------------------------------------------
To unsubscribe, e-mail: httpclient-users-unsubscr...@hc.apache.org
For additional commands, e-mail: httpclient-users-h...@hc.apache.org

Reply via email to