Hi, Chris H

Thanks for your suggestion, changed as below to just print client bound port as 
you mentioned. Certainly, this is not a fix, just add some debug info, hope we 
could get next failure sample to prove the guess :)

New Changes:

diff -r c26fbf1434c4 
test/jdk/java/net/MulticastSocket/UnreferencedMulticastSockets.java
--- a/test/jdk/java/net/MulticastSocket/UnreferencedMulticastSockets.java       
Thu Sep 20 14:19:53 2018 -0700
+++ b/test/jdk/java/net/MulticastSocket/UnreferencedMulticastSockets.java       
Fri Sep 21 09:45:40 2018 +0800
@@ -120,6 +120,7 @@
         thr.start();
 
         MulticastSocket client = new MulticastSocket(0);
+        System.out.printf("  client bound port: %d%n", client.getLocalPort());
         client.connect(svr.getHost(), svr.getPort());
         pendingSockets.add(new NamedWeak(client, pendingQueue, 
"clientMulticastSocket"));
         extractRefs(client, "clientMulticastSocket");

Regards,
Chris Y

> On 20 Sep 2018, at 7:11 PM, Chris Hegarty <chris.hega...@oracle.com> wrote:
> 
> Thank you for looking at this issue Chris Y.
> 
> I don’t disagree with the changes, but if you want to confirm your
> suspicion, that the same port is being reused, then printing out
> the client’s bound port would do that ( since the servers port is
> already printed in the logs ). 
> 
> If such a change was integrated, then the next observed failure
> would confirm or disconfirm your suspicion.
> 
> -Chris H.
> 
>> On 20 Sep 2018, at 11:50, Chris Yin <xu.y....@oracle.com> wrote:
>> 
>> Loop net-dev since the test is under java/net, thanks
>> 
>>> On 20 Sep 2018, at 5:30 PM, Chris Yin <xu.y....@oracle.com> wrote:
>>> 
>>> 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