> Port number of 0 is not handled at JMX or RMI layer. The given port number is passed onto the ServerSocket.
>
> https://docs.oracle.com/javase/10/docs/api/java/net/ServerSocket.html#%3Cinit%3E(int)

Using a port number of 0 to get a free port has to be done very carefully
to avoid running into other, more difficult to find issues.

Jerry T. fix a few of these before he left us:

    JDK-8182757 JDWP: Socket Transport handshake hangs on Solaris
    https://bugs.openjdk.java.net/browse/JDK-8182757

    JDK-8178676 nsk/jvmti/AttachOnDemand/attach045 fails with Exception
    https://bugs.openjdk.java.net/browse/JDK-8178676

    JDK-8188867 nsk/jdi/VirtualMachineManager/createVirtualMachine/createVM004
                (and other tests) timeout do to socket problem
    https://bugs.openjdk.java.net/browse/JDK-8188867


As an example of the difficulty, I tried to fix this bug:

    JDK-8182307 Error during JRMP connection establishment
    https://bugs.openjdk.java.net/browse/JDK-8182307

and had to back out my fix because it caused a couple of tests to fail.
I'm tracking the redo here:

    JDK-8193227 [REDO] 8182307 Error during JRMP connection establishment
    https://bugs.openjdk.java.net/browse/JDK-8193227

and I haven't had an epiphany for how to fix it without breaking
other tests (yet) so I just decommitted it from JDK11.


I'm not saying that your current fix will be susceptible to very
intermittent hangs on Solaris. I would have to take a very close
look at it and I haven't done that yet.

Dan


On 6/21/18 2:47 AM, Harsha Wardhana B wrote:


On Thursday 21 June 2018 10:30 AM, mandy chung wrote:


On 6/20/18 1:14 AM, Harsha Wardhana B wrote:
Hi,

Please find the fix below for the bug

JDK-8204661 : Show error 'Port already in use' in HashedPasswordFileTest.java

having webrev at,

http://cr.openjdk.java.net/~hb/8204661/webrev.00/

The problem root-cause is discussed in the comments section of the bug.

The fix above lets the default agent pick a free port by passing 'port=0' value and then reads the JMX Connector URL from Perf Counters.

This looks fine.  Please add this issue number to @bug.

This is interesting.  I was not aware of setting port=0 will auto-assign a free port.  Do you know if it was added for testing purpose (which I assume so)?
Port number of 0 is not handled at JMX or RMI layer. The given port number is passed onto the ServerSocket.

https://docs.oracle.com/javase/10/docs/api/java/net/ServerSocket.html#%3Cinit%3E(int)


For example test/jdk/sun/management/jmxremote/bootstrap/RmiBootstrapTest.java uses jdk.testlibrary.Utils.getFreePort() to get a free port number.

Mandy
Harsha


Reply via email to