Issue 990: MBean for Cluster improvement

This commit is contained in:
Peter Veentjer 2011-07-13 11:27:16 +03:00
parent 2e8232f748
commit d14f2f6e50

View file

@ -13,12 +13,11 @@ import org.I0Itec.zkclient.serialize._
import org.I0Itec.zkclient.exception._
import java.util.{ List JList }
import java.util.concurrent.atomic.{ AtomicBoolean, AtomicReference, AtomicInteger }
import java.util.concurrent.{ ConcurrentSkipListSet, CopyOnWriteArrayList, Callable, ConcurrentHashMap }
import java.util.concurrent.atomic.{ AtomicBoolean, AtomicReference }
import java.util.concurrent.{ CopyOnWriteArrayList, Callable, ConcurrentHashMap }
import java.net.InetSocketAddress
import javax.management.StandardMBean
import scala.collection.immutable.{ HashMap, HashSet }
import scala.collection.mutable.ConcurrentMap
import scala.collection.JavaConversions._
@ -48,8 +47,6 @@ import ChangeListener._
import ClusterProtocol._
import RemoteDaemonMessageType._
import akka.AkkaException
import com.eaio.uuid.UUID
import com.google.protobuf.ByteString
@ -59,11 +56,10 @@ import com.google.protobuf.ByteString
/**
* JMX MBean for the cluster service.
*
* FIXME revisit the methods in this MBean interface, they are not up to date with new cluster API
*
* @author <a href="http://jonasboner.com">Jonas Bon&#233;r</a>
*/
trait ClusterNodeMBean {
def start()
def stop()
@ -88,8 +84,12 @@ trait ClusterNodeMBean {
def getMemberNodes: Array[String]
def getNodeAddres():NodeAddress
def getLeader: String
def isLeader: Boolean
def getUuidsForClusteredActors: Array[String]
def getAddressesForClusteredActors: Array[String]
@ -111,6 +111,32 @@ trait ClusterNodeMBean {
def removeConfigElement(key: String)
def getConfigElementKeys: Array[String]
def getMemberShipPathFor(node:String):String
def getConfigurationPathFor(key:String):String
def getActorAddresstoNodesPathFor(actorAddress:String):String
def getActorAddressToNodesPathFor(actorAddress:String, nodeName:String):String
def getNodeToUuidsPathFor(node:String):String
def getNodeToUuidsPathFor(node:String, uuid:UUID):String
def getActorAddressRegistryPathFor(actorAddress:String):String
def getActorAddressRegistrySerializerPathFor(actorAddress:String):String
def getActorAddressRegistryUuidPathFor(actorAddress:String):String
def getActorUuidRegistryNodePathFor(uuid: UUID):String
def getActorUuidRegistryRemoteAddressPathFor(uuid: UUID):String
def getActorAddressToUuidsPathFor(actorAddress: String):String
def getActorAddressToUuidsPathFor(actorAddress: String, uuid: UUID):String
}
/**
@ -1542,20 +1568,20 @@ class DefaultClusterNode private[akka] (
private def createMBean = {
val clusterMBean = new StandardMBean(classOf[ClusterNodeMBean]) with ClusterNodeMBean {
import Cluster._
override def start() = self.start()
override def start(): Unit = self.start()
override def stop(): Unit = self.shutdown()
override def stop() = self.shutdown()
override def disconnect() = self.disconnect()
override def reconnect(): Unit = self.reconnect()
override def reconnect() = self.reconnect()
override def resign(): Unit = self.resign()
override def resign() = self.resign()
override def isConnected = self.isConnected.get
override def getNodeAddres = self.nodeAddress
override def getRemoteServerHostname = self.hostname
override def getRemoteServerPort = self.port
@ -1570,6 +1596,8 @@ class DefaultClusterNode private[akka] (
override def getLeader = self.leader.toString
override def isLeader = self.isLeader
override def getUuidsForActorsInUse = self.uuidsForActorsInUse.map(_.toString).toArray
override def getAddressesForActorsInUse = self.addressesForActorsInUse.map(_.toString).toArray
@ -1591,6 +1619,32 @@ class DefaultClusterNode private[akka] (
override def removeConfigElement(key: String): Unit = self.removeConfigElement(key)
override def getConfigElementKeys = self.getConfigElementKeys.toArray
override def getMemberShipPathFor(node:String) = self.membershipPathFor(node)
override def getConfigurationPathFor(key:String) = self.configurationPathFor(key)
override def getActorAddresstoNodesPathFor(actorAddress:String) = self.actorAddressToNodesPathFor(actorAddress)
override def getActorAddressToNodesPathFor(actorAddress:String, nodeName:String) = self.actorAddressToNodesPathFor(actorAddress, nodeName)
override def getNodeToUuidsPathFor(node:String) = self.nodeToUuidsPathFor(node)
override def getNodeToUuidsPathFor(node:String, uuid:UUID) = self.nodeToUuidsPathFor(node, uuid)
override def getActorAddressRegistryPathFor(actorAddress:String) = self.actorAddressRegistryPathFor(actorAddress)
override def getActorAddressRegistrySerializerPathFor(actorAddress:String) = self.actorAddressRegistrySerializerPathFor(actorAddress)
override def getActorAddressRegistryUuidPathFor(actorAddress:String) = self.actorAddressRegistryUuidPathFor(actorAddress)
override def getActorUuidRegistryNodePathFor(uuid: UUID) = self.actorUuidRegistryNodePathFor(uuid)
override def getActorUuidRegistryRemoteAddressPathFor(uuid: UUID)= self.actorUuidRegistryNodePathFor(uuid)
override def getActorAddressToUuidsPathFor(actorAddress: String) = self.actorAddressToUuidsPathFor(actorAddress)
override def getActorAddressToUuidsPathFor(actorAddress: String, uuid: UUID) = self.actorAddressToUuidsPathFor(actorAddress, uuid)
}
JMX.register(clusterJmxObjectName, clusterMBean)