On Thu, 25 Nov 2021 23:54:18 GMT, Rob McKenna <r...@openjdk.org> wrote:
> This fix attemps to resolve an issue where threads can stack up on each other > while waiting to get a connection from the ldap pool to an unreachable > server. It does this by having each thread start a countdown prior to holding > the pools' lock. (which has been changed to a ReentrantLock) Once the lock > has been grabbed, the timeout is adjusted to take the waiting time into > account and the process of getting a connection from the pool or creating a > new one commences. > > Note: this fix also changes the meaning of the connection pools initSize > somewhat. In a situation where we have a large initSize and a small timeout > the first thread could actually exhaust the timeout before creating all of > its initial connections. Instead this fix simply creates a single connection > per pool-connection-request. It continues to do so for subsequent requests > regardless of whether an existing unused connection is available in the pool > until initSize is exhausted. As such it may require a CSR. This pull request has now been integrated. Changeset: 3d926dd6 Author: Rob McKenna <r...@openjdk.org> URL: https://git.openjdk.java.net/jdk/commit/3d926dd66ef6551e91a4ebbbc59dcff58f5ede5a Stats: 467 lines in 5 files changed: 324 ins; 72 del; 71 mod 8277795: ldap connection timeout not honoured under contention Reviewed-by: dfuchs, aefimov ------------- PR: https://git.openjdk.java.net/jdk/pull/6568