RFR 8066708: JMXStartStopTest fails to connect to port 38112
Stuart Marks
stuart.marks at oracle.com
Mon Feb 2 22:09:04 UTC 2015
On 2/2/15 2:33 AM, Jaroslav Bachorik wrote:
> I've applied your comments and the code is a tad simpler now. I also ironed out
> a few more corner cases. I ran the test 500x in a tight loop and no failure, yay!
>
> Update: http://cr.openjdk.java.net/~jbachorik/8066708/webrev.04
Hi Jaroslav,
Looks quite a bit more straightforward now. I'm pretty much OK with this if
you're OK with it; I think I've reviewed it enough times already. :-)
I have a couple comments on test_09 that you might want to address before you
push or sometime in the future.
Line 714 typo "hugging" => "hogging"
But I'm not convinced this retry logic in the while-loop from lines 716-723 is
necessary. If you've already opened a server socket on a port, I've never seen a
case where opening the same port *again* will succeed, so why bother?
I'd suggest simply opening ServerSocket(0) and then getting the port via
getLocalPort(). I've never seen this fail. This case should work since you
actually want to open up some random port, instead of generating a random port
number for somebody else (the subprocess) to open. You can then allocate one
fewer random port. You might want to have a little loop to check that the random
port number isn't a duplicate of the actual port that you just opened. I think
this lets the code boil down a bit further:
ServerSocket ss = new ServerSocket(0);
try {
int localPort = ss.getLocalPort();
int[] ports;
do {
ports = PortAllocator.allocatePorts(1);
} while (localPort != ports[0]);
AtomicBoolean checks = new AtomicBoolean(false);
...
} finally {
ss.close();
s.stop();
}
s'marks
More information about the serviceability-dev
mailing list