RFR of JDK-8168975: java/rmi/activation/Activatable tests fail due to "Port already in use" in RMID.restart()

joe darcy joe.darcy at oracle.com
Wed Nov 16 18:30:14 UTC 2016


In terms of timeout, please use much shorter timeout, seconds not 
minutes. Most JDK regression tests complete in well under 10 seconds and 
few tests should run for as long as a minute. Also, please scale any 
timeout if a timeout factor retrieved from the jtreg environment. This 
allows the test to behave better on heavily loaded or slow machines 
where the test invoker has requested more time.

Thanks,

-Joe


On 11/16/2016 9:01 AM, Chris Hegarty wrote:
>> On 16 Nov 2016, at 07:36, Hamlin Li <huaming.li at oracle.com> wrote:
>>
>> Would you please review below fix?
>>
>> bug: https://bugs.openjdk.java.net/browse/JDK-8168975
>> webrev: http://cr.openjdk.java.net/~mli/8168975/webrev.00/
> The approach builds on the mechanism put in for 8168975, and seems
> reasonable.
>
> The system property being used to “pass” the port number is specific to
> the test, and not JDK related so should not be named
> java.nio.channels.spi.SelectorProviderPort.  Maybe something like
> openjdk.test.RMIDSelectorProvider.port ?
>
> -Chris.
>
>> Root Cause: There is a time window between RMID.start() and RMID.restart(), interloper can step in and bind to the port used by RMID in RMID.start().
>>
>> Solution:   Modify RMID.java to use inherited channel when calling RMID.restart. And extend RMIDSelectorProvider.java to try to bind to specific port, no matter 0 or none-zero(for RMID.restart) in a while loop, if timeout just call System.exit to exit rmid and let test fail.
>>
>>
>> Thank you
>> -Hamlin



More information about the core-libs-dev mailing list