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