0 Replies Latest reply on Dec 29, 2011 8:25 PM by yaohuan

    RoutingTableImpl issue in Clustering

      HI ,Dele

           Is there a bug in the org.jivesoftware.openfire.spi.RoutingTableImpl.routeToComponent(JID jid, Packet packet,  boolean routed) ,in code line

      "routed = remotePacketRouter.routePacket(nodeID.toByteArray(), jid, packet);"


            I found the code line "Set<NodeID> nodes = componentsCache.get(jid.getDomain());" 

      returns two key-values when openfire running in cluster.

           first ,the cache componentsCache.put(address, nodes) called when openfire start up ,

      for example ,

           the XMPPServer NodeID is DEFAULT_NODE_ID = NodeID.getInstance(new byte[0]).

      Then the valus changed when openfire jion a cluster,

           the cache componentsCache.put(address, nodes) called again .

      Therefore ,

              the code line "Set<NodeID> nodes = componentsCache.get(jid.getDomain());"

      returns two key-values for every component,

              the first value is  DEFAULT_NODE_ID ,that is 0 byte,second is the machine name after jion a cluster.

      So, code line "for (NodeID nodeID : nodes) " get the first value DEFAULT_NODE_ID ,    nodeID.toByteArray() is null ,

      That is "routed = remotePacketRouter.routePacket(nodeID.toByteArray(), jid, packet);"

      will get Exception ,said target= null etc.



      the second Nodeid value will not execute.


      thanks !