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: [email protected]
For additional commands, e-mail: [email protected]