RFR: 8223714: HTTPSetAuthenticatorTest could be made more resilient

Daniel Fuchs daniel.fuchs at oracle.com
Mon Sep 2 09:30:25 UTC 2019


Hi,

On 02/09/2019 05:29, Vyom Tewari26 wrote:
>>     2-> i think super.stop() should be the first line in the
>>     overridden stop method.
> 
>     I had thought of this when I introduced the change. However, I felt
>     that it's better to set the stop=true before calling the
>     super.stop(), since this way the other thread gets "notified" a bit
>     early that it doesn't have to accept any more connections, thus it
>     doesn't have to first go into a blocking accept() and then get
>     thrown an exception (when the stop() method does a ss.close()) and
>     then go and check if it was asked to stop. Of course, this doesn't
>     guarantee that the other thread will always benefit from this (since
>     it might already be in a blocking accept()), but at least it does
>     present the other thread a chance >
> My only worry was what if super.stop() fails and throws exception but in 
> super.stop() we are catching/ignoring the exception and logging the 
> trace to system.out.

I'd also prefer setting `stop` to  true before calling super.stop() for
the reason that Jaikiran states. That said maybe a better implementation
could be:

     try (var toClose = ss;) {
         stop = true;
         super.stop();
     } catch (IOException ex) {
         ...
     }

this way we can be sure that ss.close will be closed
even if super.stop() throws something (which shouldn't
happen but who knows?)

>     If you and/or others still feel calling super.stop() should be the
>     first line, do let me know and I'll change accordingly.
> 
>>     3-> it is matter of personal preference but my preference is use
>>     the new variable name 'running' to check if server is running in
>>     place of 'stop' but again it is just a matter of personal  preference.
> 
>     If you don't have a strong preference, then I would like to stick
>     with "stop" for now, if you don't mind. Especially, given that this
>     is a private variable which never gets exposed outside (not even via
>     some getter/setter).
> 
> that is fine as you said it is private variable and changing name will 
> not make much difference.

For volatile variables it's usually a better practice to use
some variable which doesn't need to be initialized to a non
default value. `running` would have to be initialized to `true`
somewhere. Let's stick with `stop` :-)

best regards,

-- daniel


> Forgot the link to the webrev. It's here http://cr.openjdk.java.net/~jpai/webrev/8223714/2/webrev/




More information about the net-dev mailing list