On Tue, 14 Dec 2021 15:26:54 GMT, Rob McKenna <[email protected]> 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 incrementally with one additional
> commit since the last revision:
>
> Allow the test to pass on MacOSX
src/java.naming/share/classes/com/sun/jndi/ldap/LdapClientFactory.java line 70:
> 68: public PooledConnection createPooledConnection(PoolCallback pcb, long
> timeout)
> 69: throws NamingException {
> 70: return new LdapClient(host, port, socketFactory,
any need to perform sanity check against erroneous negative values on the
timeout supplied here and in other parts of the solution
-------------
PR: https://git.openjdk.java.net/jdk/pull/6568