0 Replies Latest reply on Oct 29, 2003 7:31 AM by Rainer Montag

    HA-JNDI: Multicast and multiple instances on one machine

    Rainer Montag Newbie


      I just made some expiriences with the HA-JNDI multicast and running multiple instances on a single machine. I encountered some problems, found some solutions and like to ask if the problems are considered to be a bug...

      My setup:
      - JBoss 3.2.2
      - Two instances running on a single W2K-PC, alternatively I 'm using two instances running on a single SUN solaris. instance 1 using 1200 as HA-JNDI port, instance 2 using 1300.
      - "JBoss Clustering" documentation, 4. edition
      - Standalone testclient (JUnit) on PC or SUN, configured for Multicast (url-property not set)

      The problem:

      When starting my testclient and making a lookup, both instances receive the GET_ADDRESS datagram. Then each server send a datagram packet back NOT using a multcast. Since the testclient opens a MulticastSocket on the Multigroup port 1102, each server sends a response datagramm back to <client-ip>:1102.

      I encountered two problems with this approach:

      1) If client and server are one the same instance, they have the same ip-address. In my environment one server instance "catches" all the answers, so the client timed-out with no answers (Note: On W2K, I set "loopback" to true, on SUN to false as described in the cluster document).

      2) Same problem if two clients on one instance make a concurrent multicast call (servers on other machine): Both waiting for responses, only one client catches all the responses. The second client ever lose.

      Two possible solutions come to my mind:

      1) Currently the NamingContext opens a MulticastSocket on the multicast group port. If the client would use a different dedicated port, he can send his call with the multicast group address and the server could reply to <client-ip>:<dedicated client-port> with his answer. No one else (another client or server) would "catch" the server response if using different port numbers (Disadvantage: One additional HA-JNDI JNP property like "jnp.multicastPort").

      2) HANamingService simply send a response datagram back to a dedicated IP:port address (Unicast). Why doesn't the server also sends a multicast call using the well-known multicast group address to propagate his answer ? A multicast answer seems to be a clean solution because: a) All clients waiting for an answer will receive them and b) other server receiving the answer will ignore them.

      I applied both solutions to my private jboss and solved my problems. I would like to know if the solutions I mentioned are reasonable, respectively why not.

      Any feedback on this issue is welcome.

      Thanks for reading and greetings,