RFR of JDK-8134599: TEST_BUG: java/rmi/transport/closeServerSocket/CloseServerSocket.java fails intermittently with Address already in use

Hamlin Li huaming.li at oracle.com
Tue Oct 15 09:44:04 UTC 2019


On 2019/10/15 2:44 PM, Weijun Wang wrote:
> I am OK with the change that makes this test more robust.
Thanks Max.
>
> However, I am not an expert in RMI and don't know why the port cannot be released. If verifyPortFree(PORT) on line 60 can always succeed right after TestLibrary.getUnusedRandomPort() tries to create a ServerSocket at PORT and close it, this means the OS underneath spends no time in freeing the port.

No, the port is not freed here, it's only freed by unexportObject.

But the original code is a little bit faulty at verifyPortInUse, it 
should be as below, I have also updated the webrev in place: 
http://cr.openjdk.java.net/~mli/8134599/webrev.01/

@@ -101,6 +112,7 @@
      private static void verifyPortInUse(int port) throws IOException {
          try {
              verifyPortFree(port);
+            throw new RuntimeException("port is not in use: " + port);

> Is UnicastRemoteObject.unexportObject() also doing something similar? I see that the ServerSocket inside is closed on TCPTransport.java:280. Is it reliably called?

In my understanding, it's not a sync operation, it's async, that means 
when unexportObject returns, it just triggers the port release, does not 
mean it already released the port.

>
> Even after this bug is resolved, I'd suggest add some logging and rerun this test unchanged multiple times to see what really happened.

Unfortunately, most of time this kind of issue is not easy to reproduce 
by running it multiple times. In my point of view, current logging is 
sufficient for diagnosing.

Thank you

-Hamlin

>
> --Max
>
>
>> On Oct 15, 2019, at 11:04 AM, Hamlin Li <huaming.li at oracle.com> wrote:
>>
>> Thanks for reviewing, I updated change at: http://cr.openjdk.java.net/~mli/8134599/webrev.01/
>>
>> it does not increase minimum time time and consider timeout factor at the same time.
>>
>> Thank you
>>
>> -Hamlin
>>


More information about the core-libs-dev mailing list