[prev in list] [next in list] [prev in thread] [next in thread] 

List:       openjdk-serviceability-dev
Subject:    Re: RFR : JDK-8204661 - Show error 'Port already in use' in HashedPasswordFileTest.java
From:       Harsha Wardhana B <harsha.wardhana.b () oracle ! com>
Date:       2018-06-25 7:16:29
Message-ID: 5e6d785d-d02a-5dca-7e1d-1cd3b2ffcff3 () oracle ! com
[Download RAW message or body]

After internal discussions, we have decided to proceed with the current fix.

Thank you Mandy, Daniel, Dan and David for the review.

Harsha

On Friday 22 June 2018 10:07 AM, Harsha Wardhana B wrote:
> Hi Dan,
>
> The utility function Utils.getFreePort gets free port by creating 
> server socket with port 0. Instead of getting a free port before hand 
> (via Utils.getFreePort), I am letting the JMX agent choose the free 
> port. The risks associated with choosing free port has moved from test 
> lib to the product.
>
> Do you think this is something that should be handled at test-level? 
> Maybe refactor the test library (Utils.getFreePort)?
>
> Thanks
> Harsha
>
> On Thursday 21 June 2018 07:28 PM, Daniel D. Daugherty wrote:
>> > 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
>>>
>>
>

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic