synchronized void addReplacedCnx(PooledConnection con, Endpoint oldEndpoint) {
      if (closing) {
        throw new CacheClosedException("This pool is closing");
      }
      if (allConnections.remove(con)) {
        // otherwise someone else has removed it and closed it
        removeFromEndpointMap(oldEndpoint, con);
        addToEndpointMap(con);
        allConnections.add(con);
        if (isIdleExpirePossible()) {
          startBackgroundExpiration();
        }
      }
    }
An existing connections lifetime has expired. We only want to create one replacement connection
at a time so this should block until this connection replaces an existing one. Note that if
a connection is created here it must not count against the pool max and its idle time and
lifetime must not begin until it actually replaces the existing one.

@param currentServer the server the candidate connection is connected to
@return true if caller should recheck for expired lifetimes; false if a background check was
        scheduled or no expirations are possible.
geode-core/src/main/java/org/apache/geode/cache/client/internal/pooling/ConnectionManagerImpl.java