RFR: JDK-8160240 - javax/rmi/PortableRemoteObject/8146975/RmiIiopReturnValueTest.java failed with error "Address already in use: bind"

Mark Sheppard mark.sheppard at oracle.com
Fri Jul 1 18:15:56 UTC 2016


Hi Sean,
   thanks for the feedback ... we should be ok with fixed ports. The 
orbd by default uses the fixed ports of 1050 and 1049.
The selected ports are not in the ephemeral range on any platform.
solaris
  /usr/sbin/ndd /dev/tcp tcp_smallest_anon_port tcp_largest_anon_port
32768

65535

linux
cat /proc/sys/net/ipv4/ip_local_port_range
32768   61000

windows
netsh int ipv4 show dynamicport tcp
netsh int ipv6 show dynamicport tcp

https://www.cymru.com/jtk/misc/ephemeralports.html

As such the name service and the activator are expected to
start on well known service ports:

so the ports chosen are variants of 1050 1049  ... 5050 5049 etc. should 
be ok.
The clash happens when the orbd's TCP resources  of the first run are 
not released immediately
by the windows/solaris kernel - as the TCP connections go through their 
various state changes.

It is an intermittent failure.

I'll have a look at the exception cases to ensure that all services are 
terminated in such instances ... I had thought that I did this 
originally, but
will double check various scenarios

regards
Mark

On 01/07/2016 16:45, Seán Coffey wrote:
> Mark,
>
> fixed port numbers are always going to be problematic in tests. Is 
> there any way the port numbers can be assigned after the test starts 
> up ? Maybe the com.sun.jndi.cosnaming.CNCtxFactory class could be 
> modified/accessed via reflection so that the initUsingIiopUrl can be 
> re-called once you're sure of a free port on test client.
>
> That failing, maybe you can use a try/finally block in main method to 
> ensure that stopTestComponents() is always called. Looks like there's 
> potential for the test to exit early without cleaning up if 
> startRmiIiopServer() runs into an exception.
> Regards,
> Sean.
> On 01/07/16 00:38, Mark Sheppard wrote:
>> Hi,
>>   please oblige and review the following change
>> http://cr.openjdk.java.net/~msheppar/8160240/webrev/
>>
>> to address the issue raised in
>> https://bugs.openjdk.java.net/browse/JDK-8160240
>>
>> it has been observed that, during continuous integration regression 
>> tests on some platforms,
>> there is an intermittent bind failure, when starting the orbd for the 
>> test. Thus, as the test is composed of
>> two run commands, one without security manager and one with security 
>> manager, it is
>> assumed that, the second run starts before the sockets in use in the 
>> first run have been fully released.
>> Therefore, to overcome the bind already in use port conflict, the 
>> test's second run with security manager
>> has been modified to use different ports, for cos nameservice and 
>> activator, to those of the first run.
>>
>> regards
>> Mark
>



More information about the core-libs-dev mailing list