Please review below minor change for 8199931, thanks

A little explanation about the change here, since the failure samples are too 
less (seems too hard to repro), so below scenario which caused the failure is a 
guess. MultcastSocket constructor set reuse address true by default, when call 
“new MulticastSocket(0)” to create client socket that maybe in a little 
possibility it used same address with server, that will explain why the failure 
looks like client received data package from itself. Follow the guessing, I 
modified test code to explicit create client socket use same port with server, 
then got same failure error as reported bug on OEL7. Though I cannot make sure 
the guess is 100% match with the original failure, but at least we could try to 
prevent such possible scenario.

bug: https://bugs.openjdk.java.net/browse/JDK-8199931

changes:

diff -r 43668e3cae4d 
test/jdk/java/net/MulticastSocket/UnreferencedMulticastSockets.java
--- a/test/jdk/java/net/MulticastSocket/UnreferencedMulticastSockets.java       
Thu Sep 20 08:59:03 2018 +0200
+++ b/test/jdk/java/net/MulticastSocket/UnreferencedMulticastSockets.java       
Thu Sep 20 16:37:36 2018 +0800
@@ -40,6 +40,7 @@
 import java.net.DatagramSocket;
 import java.net.DatagramSocketImpl;
 import java.net.InetAddress;
+import java.net.InetSocketAddress;
 import java.net.MulticastSocket;
 import java.net.UnknownHostException;
 import java.nio.file.Files;
@@ -119,7 +120,10 @@
         Thread thr = new Thread(svr);
         thr.start();
 
-        MulticastSocket client = new MulticastSocket(0);
+        MulticastSocket client = new MulticastSocket(null);
+        // prevent MulticastSocket reuse previous address, see 8199931
+        client.setReuseAddress(false);
+        client.bind(new InetSocketAddress(0));
         client.connect(svr.getHost(), svr.getPort());
         pendingSockets.add(new NamedWeak(client, pendingQueue, 
"clientMulticastSocket"));
         extractRefs(client, "clientMulticastSocket”);

Regards,
Chris

Reply via email to