Details

    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 4.4 Final
    • Fix Version/s: 4.4.1
    • Component/s: HttpClient (classic)
    • Labels:

      Description

      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:

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

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                Unassigned
                Reporter:
                charleslip Charles Lip
              • Votes:
                0 Vote for this issue
                Watchers:
                8 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: