1 Reply Latest reply on Dec 8, 2008 7:14 AM by timfox

    Management code now requires an always-on INVM acceptor

    jmesnil

      I've refactored the management code to make it work on a cluster of JBM2 nodes.

      Now, all management operations use core messages which are replicated on the live & backup nodes to ensure that their states are correctly replicated (e.g. creation on a queue on both nodes, etc.)

      To make it simple to manage JBM, we still expose the management operations through JMX MBeans. These mbeans implementations are simple facade which creates a corresponding Core message, sent it to a well-known "management address" and wait for the reply (see top class ).
      We use a INVM connector to connect to the server (since the core message is sent from *inside* the server).

      To make the code more generic, JMX operation invocations *always* goes through a replicated core message wether the node is replicated or not.
      This implies that the server *must* always have a INVM acceptor ready to accept the core message from the management code.
      I hesitated to have a switch for every management operation implementation (if the node is not replicated, invokes directly, else use a replicated core message) but I stick to a single implementation (INVM connection code path is straightforward enough) to make the code more uniform.

      For now, I have not changed the server configuration. This means that the user must explicitely add a INVM acceptor if he wants to be able to manage the server using JMX.
      To make it more user-friendly, I'll add the creation of the INVM acceptor when the user configuration set jmx-enable to true.