On Tue, 2015-02-10 at 18:56 +0800, Charles Lip wrote:
> 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();
>     }
> 
> 

Please raise a JIRA for this defect.

Oleg



---------------------------------------------------------------------
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