5 Replies Latest reply on Nov 28, 2008 9:32 PM by deepblueli

    Only one instance of the "Draw demo application" can be star

      Hello, I tried appending this to an existing problem with no response,

      Having trouble with jgroups runnig on Windows 2000 or XP. I have completed the following steps, can can only ever get one version of Draw application to run on a PC


      GetNetworkInterfaces

      C:\jgroups\JGROUP~1.BIN>java -Djava.net.preferIPv4Stack=true -Djgroups.bind_addr=170.198.227.92 -Djgroups.udp.mcast_addr=239.10.10.10 -Djgroups.udp.mcast_port=7654
      -cp ./;jgroups-all.jar;commons-logging.jar;log4j.properties org.jgroups.util.GetNetworkInterfaces
      lo:
      MS TCP Loopback interface
      /127.0.0.1 (127.0.0.1)
      ---------------------
      eth0:
      Broadcom NetXtreme Gigabit Ethernet Driver
      /170.198.227.92 (bd01.cstplc.lan)
      ---------------------





      Multicast Discover Test

      org.jgroups.tests.McastDiscovery

      ========================================================
      Responses received ordered by interface:

      170.198.227.92: [/127.0.0.1:3896, /170.198.227.92:3897]
      127.0.0.1: [/127.0.0.1:3896, /170.198.227.92:3897]

      -- Valid interfaces are [/170.198.227.92, /127.0.0.1]


      Use of any of the above interfaces in "UDP(bind_addr=)" will guarantee that the members will find each other
      ========================================================


      First Instance of the Draw Application

      C:\jgroups\JGROUP~1.BIN>java -Djava.net.preferIPv4Stack=true -Djgroups.bind_addr=170.198.227.92 -Djgroups.udp.mcast_addr=239.10.10.10 -Djgroups.udp.mcast_port=7
      654 -cp ./;jgroups-all.jar;commons-logging.jar;log4j.properties org.jgroups.demos.Draw
      10-Oct-2008 12:32:42 org.jgroups.JChannel init
      INFO: JGroups version: 2.6.4.GA

      -------------------------------------------------------
      GMS: address is 170.198.227.92:4805
      -------------------------------------------------------
      ** View=[170.198.227.92:4805|0] [170.198.227.92:4805]


      A nestat -an returns the following info

      TCP 170.198.227.92:4806 0.0.0.0:0 LISTENING
      UDP 0.0.0.0:7654 *:*

      Restarting this first instance, the port showing in the Draw app window is always one less than the port showing in the netstat output.


      Second Instance of the Draw Application

      C:\jgroups\JGroups-2.6.4.GA.bin>java -Djava.net.preferIPv4Stack=true -Djgroups.bind_addr=170.198.227.92 -Djgroups.udp.mcast_addr=239.10.10.10 -Djgroups.udp.mcas
      t_port=7654 -cp ./;jgroups-all.jar;commons-logging.jar;log4j.jar org.jgroups.demos.Draw
      log4j:ERROR Could not find value for key log4j.appender.AtsEventLogFile
      log4j:ERROR Could not instantiate appender named "AtsEventLogFile".
      INFO - [main] JGroups version: 2.6.4.GA
      DEBUG - [main] mapping is:
      1: class org.jgroups.stack.IpAddress
      2: class org.jgroups.protocols.CAUSAL$CausalHeader
      3: class org.jgroups.protocols.FD$FdHeader
      6: class org.jgroups.protocols.FD_SOCK$FdHeader
      7: class org.jgroups.protocols.FragHeader
      13: class org.jgroups.protocols.PingHeader
      14: class org.jgroups.protocols.TcpHeader
      19: class org.jgroups.protocols.TunnelHeader
      20: class org.jgroups.protocols.UdpHeader
      21: class org.jgroups.protocols.UNICAST$UnicastHeader
      22: class org.jgroups.protocols.VERIFY_SUSPECT$VerifyHeader
      24: class org.jgroups.protocols.pbcast.GMS$GmsHeader
      25: class org.jgroups.protocols.pbcast.NakAckHeader
      27: class org.jgroups.protocols.pbcast.STABLE$StableHeader
      28: class org.jgroups.protocols.pbcast.STATE_TRANSFER$StateHeader
      29: class org.jgroups.protocols.SMACK$SmackHeader
      30: class org.jgroups.Message
      31: class org.jgroups.View
      32: class org.jgroups.ViewId
      34: interface org.jgroups.Address
      35: class org.jgroups.blocks.RequestCorrelator$Header
      36: class org.jgroups.protocols.PingRsp
      38: class java.util.Vector
      39: class org.jgroups.protocols.pbcast.JoinRsp
      40: class org.jgroups.util.Digest
      41: class java.util.Hashtable
      53: class org.jgroups.protocols.COMPRESS$CompressHeader
      54: class org.jgroups.protocols.FC$FcHeader
      56: class org.jgroups.protocols.TpHeader
      57: class org.jgroups.protocols.ENCRYPT$EncryptHeader
      58: class org.jgroups.protocols.SEQUENCER$SequencerHeader
      59: class org.jgroups.protocols.FD_SIMPLE$FdHeader
      60: class org.jgroups.protocols.VIEW_SYNC$ViewSyncHeader
      61: class org.jgroups.protocols.FD_ALL$Header
      62: class org.jgroups.protocols.SFC$Header
      63: class org.jgroups.mux.MuxHeader
      64: class org.jgroups.protocols.pbcast.FLUSH$FlushHeader
      65: class org.jgroups.protocols.pbcast.STREAMING_STATE_TRANSFER$StateHeader
      66: class org.jgroups.blocks.PullPushAdapter$PullHeader
      67: class org.jgroups.protocols.AuthHeader

      DEBUG - [main] changed role to org.jgroups.protocols.pbcast.ClientGmsImpl
      DEBUG - [main] frag_size=60000, overhead=200, new frag_size=59800
      DEBUG - [main] received CONFIG event: {bind_addr=/170.198.227.92}
      DEBUG - [main] received CONFIG event: {bind_addr=/170.198.227.92}
      TRACE - [main] stable task started
      DEBUG - [main] creating sockets and starting threads
      DEBUG - [main] sockets will use interface 170.198.227.92
      org.jgroups.ChannelException: failed to start protocol stack
      at org.jgroups.JChannel.startStack(JChannel.java:1545)
      at org.jgroups.JChannel.connect(JChannel.java:364)
      at org.jgroups.demos.Draw.go(Draw.java:174)
      at org.jgroups.demos.Draw.main(Draw.java:144)
      Caused by: java.lang.Exception: problem creating sockets (bind_addr=/170.198.227.92, mcast_addr=null)
      at org.jgroups.protocols.UDP.start(UDP.java:373)
      at org.jgroups.stack.Configurator.startProtocolStack(Configurator.java:124)
      at org.jgroups.stack.ProtocolStack.startStack(ProtocolStack.java:392)
      at org.jgroups.JChannel.startStack(JChannel.java:1542)
      ... 3 more
      Caused by: java.net.BindException: Address already in use: Cannot bind
      at java.net.PlainDatagramSocketImpl.bind0(Native Method)
      at java.net.PlainDatagramSocketImpl.bind(PlainDatagramSocketImpl.java:82)
      at java.net.DatagramSocket.bind(DatagramSocket.java:368)
      at java.net.MulticastSocket.(MulticastSocket.java:147)
      at java.net.MulticastSocket.(MulticastSocket.java:112)
      at org.jgroups.protocols.UDP.createSockets(UDP.java:480)
      at org.jgroups.protocols.UDP.start(UDP.java:369)
      ... 6 more

      Using wireshark I can see the UDP traffic coming from 170.198.227.92 to 239.10.10.10 with a src/dst port of 7654

      Multicast Send/Recieve test works fine

      C:\jgroups\JGROUP~1.BIN>java -Djava.net.preferIPv4Stack=true -Djgroups.bind_addr=170.198.227.92 -Djgroups.udp.mcast_addr=239.10.10.10 -Djgroups.udp.mcast_port=7
      654 -cp ./;jgroups-all.jar;commons-logging.jar;log4j.properties org.jgroups.tests.McastSenderTest
      Socket=0.0.0.0/0.0.0.0:4874, ttl=32, bind interface=/0.0.0.0
      > me again
      > << Received response from 170.198.227.92:5555: Hello from Bela


      C:\jgroups\JGroups-2.6.4.GA.bin>java -Djava.net.preferIPv4Stack=true -Djgroups.bind_addr=170.198.227.92 -Djgroups.udp.mcast_addr=239.10.10.10 -cp jgroups-all.ja
      r;commons-logging.jar;log4j.properties org.jgroups.tests.McastReceiverTest
      Socket=0.0.0.0/0.0.0.0:5555, bind interface=/0.0.0.0
      me again [sender=170.198.227.92:4874]


      Can anyone point me in the right direction to resolve this issue. I have also tried this with 2.6.5 and get the same results.

      Many Thanks

        • 1. Re: Only one instance of the
          deepblueli

          I also have the same issue. But it only happens to certain PCs. I think it is not specific to jboss / jgroups, but to all java applications that are using multicast.

          • 2. Re: Only one instance of the
            brian.stansberry

            I've never gotten multicast to work on the loopback interface on windows; for testing on Windows I always ended up assigning multiple IPs to one of my NICs.

            • 3. Re: Only one instance of the
              deepblueli

              The weird thing is it worked before in same PC a month ago, but when I am trying now, I got the error: java.net.BindException: Address already in use: Cannot bind. I think it should be the software I installed during the period.

              I saw this error in some of the PCs before, but we don't have any clue why this is happening.

              • 4. Re: Only one instance of the
                brian.stansberry

                Ah, I missed the "Address already in use part.

                Using netstat -nao from the command line can tell you the process id of whatever is using the port. In Task Manager you can edit the configuration to get it to show you the process ids in the GUI; from that you can figure out what it is.

                There are likely slicker ways to do that, but I'm not a Windows guru.

                • 5. Re: Only one instance of the
                  deepblueli

                  It is a multicast IP & port. So, multiple JVM processes should be able to bind to the same multicast ip & port.

                  It works in most of the PCs, but only certain PCs, it doesn't work.