8042581: Intermittent failure in java/net/DatagramSocket/InheritHandle.java
Reviewed-by: alanb, chegar
This commit is contained in:
parent
cd582fa380
commit
00b2f7005d
@ -22,27 +22,51 @@
|
||||
*/
|
||||
|
||||
/* @test
|
||||
* @bug 4945514
|
||||
* @bug 4945514 8042581
|
||||
* @summary DatagramSocket should make handle not inherited
|
||||
*/
|
||||
|
||||
import java.net.*;
|
||||
import java.net.BindException;
|
||||
import java.net.DatagramSocket;
|
||||
import java.net.InetSocketAddress;
|
||||
|
||||
public class InheritHandle {
|
||||
private static final long SLEEPTIME_MS = 1000L;
|
||||
|
||||
public static void main(String[] args) throws Exception {
|
||||
DatagramSocket sock = new DatagramSocket (0);
|
||||
sock.setReuseAddress(true);
|
||||
int port = sock.getLocalPort();
|
||||
int port;
|
||||
try (DatagramSocket sock = new DatagramSocket(0);) {
|
||||
sock.setReuseAddress(true);
|
||||
port = sock.getLocalPort();
|
||||
|
||||
/**
|
||||
* spawn a child to check whether handle passed to it or not;
|
||||
* it shouldn't
|
||||
*/
|
||||
Runtime.getRuntime().exec ("sleep 10");
|
||||
/**
|
||||
* spawn a child to check whether handle passed to it or not; it
|
||||
* shouldn't
|
||||
*/
|
||||
Runtime.getRuntime().exec("sleep 10");
|
||||
}
|
||||
|
||||
sock.close();
|
||||
sock = new DatagramSocket (null);
|
||||
sock.setReuseAddress(true);
|
||||
sock.bind(new InetSocketAddress(port));
|
||||
try (DatagramSocket sock = new DatagramSocket(null);) {
|
||||
sock.setReuseAddress(true);
|
||||
int retries = 0;
|
||||
boolean isWindows = System.getProperty("os.name").startsWith("Windows");
|
||||
InetSocketAddress addr = new InetSocketAddress(port);
|
||||
while (true) {
|
||||
try {
|
||||
sock.bind(addr);
|
||||
break;
|
||||
} catch (BindException e) {
|
||||
if (isWindows && retries++ < 5) {
|
||||
Thread.sleep(SLEEPTIME_MS);
|
||||
System.out.println("BindException \"" + e.getMessage() + "\", retrying...");
|
||||
continue;
|
||||
} else {
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user