[12] RFR 8210695: Create test to cover JDK-8205330 InitialDirContext ctor sometimes throws NPE if the server has sent a disconnection

Daniel Fuchs daniel.fuchs at oracle.com
Fri Sep 14 10:19:07 UTC 2018


Hi Chris,

 > http://cr.openjdk.java.net/~xyin/8210695/webrev.01/

Looks good to me.

 > Yep, fixed as you suggested. My original though is that the stack 
trace maybe too verbose if most of runs hit NamingException, leave it to 
stderr may make the log more readable, but yes, the exception is 
expected and not considered as error as you commented. Anyway, we could 
adjust it later if necessary.

An alternative then would be to print an additional message on
stderr - something like:

   89                 } catch (NamingException ne) {
   90                     System.out.println("(" + count + "/" + 
REPEAT_COUNT
   91                             + ") It's ok to get NamingException: " 
+ ne);
   92                     // for debug
                          System.err.println("Caught expected exception: 
" + ne);
   93                     ne.printStackTrace();

If you decide to go this way instead then no need for an additional
review...

best regards,

-- daniel



On 14/09/2018 04:42, Chris Yin wrote:
> Hi, Daniel
> 
> Thank you for the reviewing and comments, inline and update webrev as below, thanks
> 
> http://cr.openjdk.java.net/~xyin/8210695/webrev.01/
> 
>> On 13 Sep 2018, at 5:43 PM, Daniel Fuchs <daniel.fuchs at oracle.com> wrote:
>>
>> Hi Chris,
>>
>> Thanks a lot for writing this test!
>>
>>   60         serverSocket = new ServerSocket(0);
>>   69         env.put(Context.PROVIDER_URL, String.format("ldap://localhost:%d/",
>>
>> For robustness of the test I would suggest using
>> InetAddress.getLoopbackAddress() explicitly, to
>> avoid having the dummy server listen on all interfaces.
>> Listening on all interfaces has proved to be a source of
>> intermittent failures in the past, possibly due
>> to different port reuse strategies at OS level.
> 
> Sure, fixed, thanks
> 
>>
>>   88                     System.out.println("(" + count + "/" + REPEAT_COUNT
>>   89                             + ") It's ok to get NamingException: " + ne);
>>   90                     // for debug
>>   91                     ne.printStackTrace();
>>
>> I think it would be better in that case to print the stactrace on
>> stdout (i.e. use ne.printStackTrace(System.out)), since that
>> exception is expected and not considered as an error.
> 
> Yep, fixed as you suggested. My original though is that the stack trace maybe too verbose if most of runs hit NamingException, leave it to stderr may make the log more readable, but yes, the exception is expected and not considered as error as you commented. Anyway, we could adjust it later if necessary.
> 
> Regards,
> Chris
> 
>>
>> best regards,
>>
>> -- daniel
>>
>>
>> On 13/09/2018 07:59, Chris Yin wrote:
>>> Please have a review for below new added test to cover JDK-8205330, thanks
>>> This test used dummy ldap server to simulate the scenario to send “Notice of Disconnection” after binding, it will repeat InitialDirContext() for 1000 times (normally the NPE bug should be hit less than 100 times run, but just in case), test failed with NPE if without JDK-8205330 fix change and passed after the fix.
>>> I put this test under test/jdk/com/sun/jndi/ldap/ since the bug root cause is from com.sun.jndi.ldap.LdapClient, feel free to let me know if it should be moved to other suitable folder.
>>> bug: https://bugs.openjdk.java.net/browse/JDK-8210695
>>> webrev: http://cr.openjdk.java.net/~xyin/8210695/webrev.00/
>>> Regards,
>>> Chris
>>
> 



More information about the core-libs-dev mailing list