ConnectionPoolConfiguration.NO_TIMEOUT uses Duration.ofNanos(-1) but ConnectionPool evictionPredicate converts the timeout to millis, causing it to evaluate to 0 and hence true, therefore closing the connection eagerly.
It should use maxLifeTime.toNanos to align with NO_TIMEOUT.
ConnectionPoolConfiguration.NO_TIMEOUT uses Duration.ofNanos(-1) but ConnectionPool evictionPredicate converts the timeout to millis, causing it to evaluate to 0 and hence true, therefore closing the connection eagerly.
It should use maxLifeTime.toNanos to align with NO_TIMEOUT.