Looks good for me! On 2014-09-04 19:59, Yasumasa Suenaga wrote: > Hi all, > > Thank you so much, Dmitry! > > I've created webrev for it. > http://cr.openjdk.java.net/~ysuenaga/JDK-8057556/webrev.0/ > > Please review. > > > Thanks, > > Yasumasa > > > (2014/09/04 21:26), Dmitry Samersoff wrote: >> Yasumasa, >> >> The CR number is JDK-8057556 >> >> I'll care about it's integration. >> >> -Dmitry >> >> On 2014-09-02 18:52, Yasumasa Suenaga wrote: >>> Hi all, >>> >>> I'm trying to use JDP on my Fedora20 machine. >>> My machine has two NICs and only one NIC is up. >>> >>> I passed system properties as below, however JDP broadcaster >>> thread was not started: >>> >>> -Dcom.sun.management.jmxremote.port=7091 >>> -Dcom.sun.management.jmxremote.authenticate=false >>> -Dcom.sun.management.jmxremote.ssl=false >>> -Dcom.sun.management.jmxremote.autodiscovery=true >>> -Dcom.sun.management.jdp.name=TEST >>> >>> I checked exceptions with jdb, SocketException was occurred in >>> JDPControllerRunner#run(), and it was caused by another NIC >>> is down. >>> >>> Currently, DiagramChannel which is used in JDPBroadcaster >>> tries to send JDP packet through all "UP" NICs. >>> However, NIC which is controlled by NetworkManager seems to >>> be still "UP" when ifdown command is executed. >>> (It seems to be removed IP address from NIC only.) >>> >>> >>> This problem may be Fedora, however I think it should be >>> improved in JDK. >>> I've created a patch as below, and it works fine in my environment. >>> (jdk9/dev/jdk) >>> >>> If this patch may be accepted, I will file this to JBS. >>> >>> -------------------- >>> diff -r 68a6bb51cb26 >>> src/java.management/share/classes/sun/management/jdp/JdpBroadcaster.java >>> --- >>> a/src/java.management/share/classes/sun/management/jdp/JdpBroadcaster.java >>> Mon Sep 01 13:33:28 2014 +0200 >>> +++ >>> b/src/java.management/share/classes/sun/management/jdp/JdpBroadcaster.java >>> Tue Sep 02 23:25:50 2014 +0900 >>> @@ -35,6 +35,7 @@ >>> import java.nio.ByteBuffer; >>> import java.nio.channels.DatagramChannel; >>> import java.nio.channels.UnsupportedAddressTypeException; >>> +import java.util.Enumeration; >>> >>> /** >>> * JdpBroadcaster is responsible for sending pre-built JDP packet across >>> a Net >>> @@ -79,6 +80,15 @@ >>> if (srcAddress != null) { >>> // User requests particular interface to bind to >>> NetworkInterface interf = >>> NetworkInterface.getByInetAddress(srcAddress); >>> + >>> + if (interf == null) { >>> + throw new JdpException("Unable to get network interface >>> for " + srcAddress.toString()); >>> + } >>> + >>> + if (!interf.isUp() || !interf.supportsMulticast()) { >>> + throw new JdpException(interf.getName() + " does not >>> support multicast."); >>> + } >>> + >>> try { >>> channel.bind(new InetSocketAddress(srcAddress, 0)); >>> } catch (UnsupportedAddressTypeException ex) { >>> @@ -86,6 +96,23 @@ >>> } >>> channel.setOption(StandardSocketOptions.IP_MULTICAST_IF, >>> interf); >>> } >>> + else { >>> + Enumeration<NetworkInterface> nics = >>> NetworkInterface.getNetworkInterfaces(); >>> + while (nics.hasMoreElements()) { >>> + NetworkInterface nic = nics.nextElement(); >>> + >>> + if (nic.isUp() && nic.supportsMulticast()) { >>> + try { >>> + >>> channel.setOption(StandardSocketOptions.IP_MULTICAST_IF, nic); >>> + } catch (IOException ex) { >>> + System.err.println("WARNING: JDP broadcaster >>> cannot use " + nic.getName() + ": " + ex.getMessage()); >>> + } >>> + } >>> + >>> + } >>> + >>> + } >>> + >>> } >>> >>> /** >>> -------------------- >>> >>> >>> Thanks, >>> >>> Yasumasa >>> >> >>
-- Dmitry Samersoff Oracle Java development team, Saint Petersburg, Russia * I would love to change the world, but they won't give me the sources.