Hi Alexey,

Thanks for addressing comments and answering questions. The JNDI changes in latest webrev looks good to me.
CI is also happy with the latest changes.

Best,
Aleksei

On 10/07/2020 21:37, Alexey Bakhtin wrote:
Hello Aleksei,

Thank you for review.
Please see my comments below.

Updated webrev: http://cr.openjdk.java.net/~abakhtin/8245527/webrev.v14/

Regards
Alexey

On 10 Jul 2020, at 19:40, Aleks Efimov <aleksej.efi...@oracle.com> wrote:

Hi Alexey,

Thank you for removing the dependency on the timeout property and adding tests 
for TLS handshake cases.

Please, find the comments about the latest webrev below:

Not quite sure why the CF is completed at two places. Probably that’s OK, but 
it would be good to know the reason :)
HandshakeCompletedListener is called in case of successful handshake only.
In case of async handshake failed we close the connection and complete CF 
exceptionally to release CF.get()

The ExecutionException could be unpacked instead of using it directly - and its 
cause used instead.
Thank you. Fixed in Connection.java and LdapCBPropertiesTest.java
'getTlsServerCertificate' should return null if 'isTlsConnection()' is false - 
rather than waiting forever.
We call isTlsConnection() in the LdapSasl before getTlsServerCertificate().
But your are right, we can double check it to prevent possible deadlock in the 
future, if code changed.
Fixed in Connection.java

java.naming/share/classes/module-info.java: could we try to improve the 
formatting of the possible values for the new system property - maybe format 
them as a list.
Done
Connection.java:995 - you could use diamond operator here
Updated
Formatting: Connection.java:1027 'catch (‘
Updated
Could we use the test/jdk/com/sun/jndi/ldap/lib/BaseLdapServer.java from the 
test library to implement dummy LDAPS server, I believe it could help to 
increase the test verbosity and reduce its code size.
Thank you for suggestion. Updated to use BaseLdapServer in the test

LdapCBPropertiesTest.java:122 - could use no param Hastable constructor
Fixed
I've also run your latest patch through our CI system and it showed no failures 
with your latest changes.

-Aleksei

On 09/07/2020 20:34, Alexey Bakhtin wrote:
Hello Sean, Daniel,

Thank you for review
I’ve added “com.sun.jndi.ldap.tls.cbtype” property into the module-info file
and updated synchronisation using CompletableFuture.
Also, I have added new test cases : successful and unsuccessful TLS handshake,
synchronous and asynchronous TLS handshake.

New webrev at : http://cr.openjdk.java.net/~abakhtin/8245527/webrev.v13

Connection property is removed from CSR :
https://bugs.openjdk.java.net/browse/JDK-8247311

Regards
Alexey

On 8 Jul 2020, at 17:41, Daniel Fuchs <daniel.fu...@oracle.com> wrote:

Thanks Sean, Alexey,

On 08/07/2020 13:25, Sean Mullan wrote:
Updated webrev : http://cr.openjdk.java.net/~abakhtin/8245527/webrev.v12/
You will also need to update the CSR to remove the connection timeout property.
Also, you should document the "com.sun.jndi.ldap.tls.cbtype" property in the 
java.naming module-info file as was done for other properties in Daniel's recent RFR, 
once he has pushed it [1].
I have pushed the fix:
https://hg.openjdk.java.net/jdk/jdk/rev/ed375ae6c779

Alexey, you should now be able to document your new 
"com.sun.jndi.ldap.tls.cbtype"
property in that @implNote as well, and update your CSR
consequently.

* src/java.naming/share/classes/com/sun/jndi/ldap/Connection.java
It looks like there is a possibility of deadlock if getTlsServerCertificate() 
is called before handshakeCompleted(). In that case the lock could be obtained 
first and the thread would end up holding the lock and waiting forever.
I also have a concern with the use of wait/notify in that code.
I would suggest prototyping using a CompletableFuture instead
(or can new certificates be exchanged later on the same
connection?)

CompletableFuture would allow you to relay and propagate any
exception raised in the callback handler as well, and would
avoid running into deadlocks.

best regards,

-- daniel

Reply via email to