Class ValidatingConnectionPool

All Implemented Interfaces:
Closeable, AutoCloseable, ConnectionPool, Container, Destroyable, Dumpable, Dumpable.DumpableContainer, LifeCycle, Sweeper.Sweepable

@Deprecated(since="2021-05-27") public class ValidatingConnectionPool extends DuplexConnectionPool
Deprecated.
The Eclipse Jetty and Apache Felix Http Jetty packages are no longer supported.

A connection pool that validates connections before making them available for use.

Connections that have just been opened are not validated. Connections that are released will be validated.

Validation by reading from the EndPoint is not reliable, since the TCP FIN may arrive just after the validation read.

This class validates connections by putting them in a "quarantine" for a configurable timeout, where they cannot be used to send requests. When the timeout expires, the quarantined connection is made idle and therefore available to send requests.

The existing HttpClient mechanism to detect server closes will trigger and close quarantined connections, before they are made idle (and reusable) again.

There still is a small chance that the timeout expires, the connection is made idle and available again, it is used to send a request exactly when the server decides to close. This case is however unavoidable and may be mitigated by tuning the idle timeout of the servers to be larger than that of the client.

  • Constructor Details

    • ValidatingConnectionPool

      public ValidatingConnectionPool(Destination destination, int maxConnections, Callback requester, Scheduler scheduler, long timeout)
      Deprecated.
  • Method Details

    • getValidatingConnectionCount

      @ManagedAttribute(value="The number of validating connections", readonly=true) public int getValidatingConnectionCount()
      Deprecated.
    • release

      public boolean release(Connection connection)
      Deprecated.
      Description copied from interface: ConnectionPool

      Returns the given connection, previously obtained via ConnectionPool.acquire(), back to this ConnectionPool.

      Specified by:
      release in interface ConnectionPool
      Overrides:
      release in class AbstractConnectionPool
      Parameters:
      connection - the connection to release
      Returns:
      true if the connection has been released, false if the connection should be closed
    • remove

      public boolean remove(Connection connection)
      Deprecated.
      Description copied from interface: ConnectionPool

      Removes the given connection from this ConnectionPool.

      Specified by:
      remove in interface ConnectionPool
      Overrides:
      remove in class AbstractConnectionPool
      Parameters:
      connection - the connection to remove
      Returns:
      true if the connection was removed from this ConnectionPool
    • dump

      public void dump(Appendable out, String indent) throws IOException
      Deprecated.
      Description copied from interface: Dumpable
      Dump this object (and children) into an Appendable using the provided indent after any new lines. The indent should not be applied to the first object dumped.
      Specified by:
      dump in interface Dumpable
      Overrides:
      dump in class AbstractConnectionPool
      Parameters:
      out - The appendable to dump to
      indent - The indent to apply after any new lines.
      Throws:
      IOException - if unable to write to Appendable
    • toString

      public String toString()
      Deprecated.
      Overrides:
      toString in class AbstractConnectionPool