RFR: JDK-8277795: ldap connection timeout not honoured under contention [v4]
Aleksei Efimov
aefimov at openjdk.java.net
Sat Jan 22 01:12:13 UTC 2022
On Fri, 21 Jan 2022 13:06:40 GMT, Rob McKenna <robm at 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.
>
> Rob McKenna has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains seven additional commits since the last revision:
>
> - Add method to guard long to int cast
> - Allow the test to pass on MacOSX
> - JDK-8277795: whitespace
> - Add test
> - JDK-8277795: formatting
> - JDK-8277795: whitespace cleanup
> - JDK-8277795: ldap connection timeout not honoured under contention
Marked as reviewed by aefimov (Committer).
-------------
PR: https://git.openjdk.java.net/jdk/pull/6568
More information about the core-libs-dev
mailing list