Cluster metrics internal API and cluster-wide transport of metrics data.

* Create Cluster Metrics API
* Create transport of relevant metrics data
Does not include load-balancing routers.
This commit is contained in:
Helena Edelson 2012-09-24 13:07:11 -06:00
parent 9a20baa831
commit dbce1c8b85
16 changed files with 1295 additions and 7 deletions

View file

@ -30,6 +30,12 @@ private[akka] class ClusterReadView(cluster: Cluster) extends Closeable {
@volatile
private var _latestStats = ClusterStats()
/**
* Current cluster metrics, updated periodically via event bus.
*/
@volatile
private var _clusterMetrics: Set[NodeMetrics] = Set.empty
val selfAddress = cluster.selfAddress
// create actor that subscribes to the cluster eventBus to update current read view state
@ -56,6 +62,7 @@ private[akka] class ClusterReadView(cluster: Cluster) extends Closeable {
case ConvergenceChanged(convergence) state = state.copy(convergence = convergence)
case s: CurrentClusterState state = s
case CurrentInternalStats(stats) _latestStats = stats
case ClusterMetricsChanged(nodes) _clusterMetrics = nodes
case _ // ignore, not interesting
}
}).withDispatcher(cluster.settings.UseDispatcher), name = "clusterEventBusListener")
@ -118,6 +125,11 @@ private[akka] class ClusterReadView(cluster: Cluster) extends Closeable {
!unreachableMembers.contains(myself) && !myself.status.isUnavailable
}
/**
* Current cluster metrics.
*/
def clusterMetrics: Set[NodeMetrics] = _clusterMetrics
/**
* INTERNAL API
* The nodes that has seen current version of the Gossip.