1. Makes sure to check if 'akka.enabled-modules=["cluster"]' is set before checking if the akka-cluster.jar is on the classpath, allowing non-cluster deployment even with the JAR on the classpath

2. Fixed bug with duplicate entries in replica set for an actor address
3. Turned on clustering for all Multi JVM tests

Signed-off-by: Jonas Bonér <jonas@jonasboner.com>
This commit is contained in:
Jonas Bonér 2011-07-05 14:46:05 +02:00
parent f2dd6bddb3
commit 4a179d14bb
37 changed files with 52 additions and 30 deletions

View file

@ -150,7 +150,7 @@ object DeploymentConfig {
} }
} }
def isHomeNode(home: Home): Boolean = nodeNameFor(home) == Config.nodeName def isHomeNode(home: Home): Boolean = nodeNameFor(home) == Config.nodename
def replicaValueFor(replicas: Replicas): Int = replicas match { def replicaValueFor(replicas: Replicas): Int = replicas match {
case Replicate(replicas) replicas case Replicate(replicas) replicas

View file

@ -48,7 +48,7 @@ class SupervisorException private[akka] (message: String, cause: Throwable = nul
* .. * ..
* )) * ))
* </pre> * </pre>
*
* @author <a href="http://jonasboner.com">Jonas Bon&#233;r</a> * @author <a href="http://jonasboner.com">Jonas Bon&#233;r</a>
*/ */
object Supervisor { object Supervisor {

View file

@ -96,6 +96,8 @@ object Config {
val TIME_UNIT = config.getString("akka.time-unit", "seconds") val TIME_UNIT = config.getString("akka.time-unit", "seconds")
val isClusterEnabled = config.getList("akka.enabled-modules").exists(_ == "cluster")
lazy val nodename = System.getProperty("akka.cluster.nodename") match { lazy val nodename = System.getProperty("akka.cluster.nodename") match {
case null | "" new UUID().toString case null | "" new UUID().toString
case value value case value value

View file

@ -30,12 +30,12 @@ object ReflectiveAccess {
* @author <a href="http://jonasboner.com">Jonas Bon&#233;r</a> * @author <a href="http://jonasboner.com">Jonas Bon&#233;r</a>
*/ */
object ClusterModule { object ClusterModule {
lazy val isEnabled = clusterInstance.isDefined lazy val isEnabled = Config.isClusterEnabled && clusterInstance.isDefined
def ensureEnabled() { def ensureEnabled() {
if (!isEnabled) { if (!isEnabled) {
val e = new ModuleNotAvailableException( val e = new ModuleNotAvailableException(
"Can't load the cluster module, make sure that akka-cluster.jar is on the classpath") "Can't load the cluster module, make sure it is enabled in the config ('akka.enabled-modules = [\"cluster\"])' and that akka-cluster.jar is on the classpath")
EventHandler.debug(this, e.toString) EventHandler.debug(this, e.toString)
throw e throw e
} }

View file

@ -1273,10 +1273,10 @@ class DefaultClusterNode private[akka] (
/** /**
* Returns a random set with node names of size 'replicationFactor'. * Returns a random set with node names of size 'replicationFactor'.
* Default replicationFactor is 0, which returns the empty Vector. * Default replicationFactor is 0, which returns the empty Set.
*/ */
private def nodesForReplicationFactor(replicationFactor: Int = 0, actorAddress: Option[String] = None): Vector[String] = { private def nodesForReplicationFactor(replicationFactor: Int = 0, actorAddress: Option[String] = None): Set[String] = {
var replicaNames = Vector.empty[String] var replicaNames = Set.empty[String]
val nrOfClusterNodes = nodeConnections.size val nrOfClusterNodes = nodeConnections.size
if (replicationFactor < 1) return replicaNames if (replicationFactor < 1) return replicaNames
@ -1288,7 +1288,7 @@ class DefaultClusterNode private[akka] (
if (actorAddress.isDefined) { // use 'preferred-nodes' in deployment config for the actor if (actorAddress.isDefined) { // use 'preferred-nodes' in deployment config for the actor
Deployer.deploymentFor(actorAddress.get) match { Deployer.deploymentFor(actorAddress.get) match {
case Deploy(_, _, _, Clustered(nodes, _, _)) case Deploy(_, _, _, Clustered(nodes, _, _))
nodes map (node Deployer.nodeNameFor(node)) take replicationFactor nodes map (node DeploymentConfig.nodeNameFor(node)) take replicationFactor
case _ case _
throw new ClusterException("Actor [" + actorAddress.get + "] is not configured as clustered") throw new ClusterException("Actor [" + actorAddress.get + "] is not configured as clustered")
} }
@ -1298,7 +1298,7 @@ class DefaultClusterNode private[akka] (
nodeName preferredNodes nodeName preferredNodes
key nodeConnections.keys key nodeConnections.keys
if key == nodeName if key == nodeName
} replicaNames = replicaNames :+ nodeName } replicaNames = replicaNames + nodeName
val nrOfCurrentReplicaNames = replicaNames.size val nrOfCurrentReplicaNames = replicaNames.size
@ -1308,7 +1308,7 @@ class DefaultClusterNode private[akka] (
else { else {
val random = new java.util.Random(System.currentTimeMillis) val random = new java.util.Random(System.currentTimeMillis)
while (replicaNames.size < replicationFactor) { while (replicaNames.size < replicationFactor) {
replicaNames = replicaNames :+ membershipNodes(random.nextInt(nrOfClusterNodes)) replicaNames = replicaNames + membershipNodes(random.nextInt(nrOfClusterNodes))
} }
replicaNames replicaNames
} }
@ -1321,9 +1321,9 @@ class DefaultClusterNode private[akka] (
/** /**
* Returns a random set with replica connections of size 'replicationFactor'. * Returns a random set with replica connections of size 'replicationFactor'.
* Default replicationFactor is 0, which returns the empty Vector. * Default replicationFactor is 0, which returns the empty Set.
*/ */
private def nodeConnectionsForReplicationFactor(replicationFactor: Int = 0, actorAddress: Option[String] = None): Vector[ActorRef] = { private def nodeConnectionsForReplicationFactor(replicationFactor: Int = 0, actorAddress: Option[String] = None): Set[ActorRef] = {
for { for {
node nodesForReplicationFactor(replicationFactor, actorAddress) node nodesForReplicationFactor(replicationFactor, actorAddress)
connectionOption nodeConnections.get(node) connectionOption nodeConnections.get(node)

View file

@ -1 +1,2 @@
akka.enabled-modules = ["cluster"]
akka.event-handler-level = "DEBUG" akka.event-handler-level = "DEBUG"

View file

@ -1 +1,2 @@
akka.enabled-modules = ["cluster"]
akka.event-handler-level = "DEBUG" akka.event-handler-level = "DEBUG"

View file

@ -1 +1,2 @@
akka.enabled-modules = ["cluster"]
akka.event-handler-level = "DEBUG" akka.event-handler-level = "DEBUG"

View file

@ -1 +1,2 @@
akka.enabled-modules = ["cluster"]
akka.event-handler-level = "DEBUG" akka.event-handler-level = "DEBUG"

View file

@ -1 +1,2 @@
akka.enabled-modules = ["cluster"]
akka.event-handler-level = "DEBUG" akka.event-handler-level = "DEBUG"

View file

@ -1 +1,2 @@
akka.enabled-modules = ["cluster"]
akka.event-handler-level = "DEBUG" akka.event-handler-level = "DEBUG"

View file

@ -1 +1,2 @@
akka.enabled-modules = ["cluster"]
akka.event-handler-level = "DEBUG" akka.event-handler-level = "DEBUG"

View file

@ -1 +1,2 @@
akka.enabled-modules = ["cluster"]
akka.event-handler-level = "DEBUG" akka.event-handler-level = "DEBUG"

View file

@ -1 +1,2 @@
akka.enabled-modules = ["cluster"]
akka.event-handler-level = "DEBUG" akka.event-handler-level = "DEBUG"

View file

@ -1 +1,2 @@
akka.enabled-modules = ["cluster"]
akka.event-handler-level = "DEBUG" akka.event-handler-level = "DEBUG"

View file

@ -1 +1,2 @@
akka.enabled-modules = ["cluster"]
akka.event-handler-level = "DEBUG" akka.event-handler-level = "DEBUG"

View file

@ -1 +1,2 @@
akka.enabled-modules = ["cluster"]
akka.event-handler-level = "DEBUG" akka.event-handler-level = "DEBUG"

View file

@ -1 +1,2 @@
akka.enabled-modules = ["cluster"]
akka.event-handler-level = "DEBUG" akka.event-handler-level = "DEBUG"

View file

@ -1 +1,2 @@
akka.enabled-modules = ["cluster"]
akka.event-handler-level = "DEBUG" akka.event-handler-level = "DEBUG"

View file

@ -1 +1,2 @@
akka.enabled-modules = ["cluster"]
akka.event-handler-level = "DEBUG" akka.event-handler-level = "DEBUG"

View file

@ -1 +1,2 @@
akka.enabled-modules = ["cluster"]
akka.event-handler-level = "DEBUG" akka.event-handler-level = "DEBUG"

View file

@ -1 +1,2 @@
akka.enabled-modules = ["cluster"]
akka.event-handler-level = "DEBUG" akka.event-handler-level = "DEBUG"

View file

@ -1,4 +1,4 @@
akka.enabled-modules = ["cluster"]
akka.event-handler-level = "DEBUG" akka.event-handler-level = "DEBUG"
akka.actor.deployment.service-hello.router = "round-robin" akka.actor.deployment.service-hello.router = "round-robin"
akka.actor.deployment.service-hello.clustered.home = "node:node1"
akka.actor.deployment.service-hello.clustered.replicas = 1 akka.actor.deployment.service-hello.clustered.replicas = 1

View file

@ -1,4 +1,4 @@
akka.enabled-modules = ["cluster"]
akka.event-handler-level = "DEBUG" akka.event-handler-level = "DEBUG"
akka.actor.deployment.service-hello.router = "round-robin" akka.actor.deployment.service-hello.router = "round-robin"
akka.actor.deployment.service-hello.clustered.home = "node:node1"
akka.actor.deployment.service-hello.clustered.replicas = 1 akka.actor.deployment.service-hello.clustered.replicas = 1

View file

@ -1,3 +1,4 @@
akka.enabled-modules = ["cluster"]
akka.event-handler-level = "DEBUG" akka.event-handler-level = "DEBUG"
akka.actor.deployment.service-hello.router = "round-robin" akka.actor.deployment.service-hello.router = "round-robin"
akka.actor.deployment.service-hello.clustered.preferred-nodes = ["host:node1"] akka.actor.deployment.service-hello.clustered.preferred-nodes = ["host:node1"]

View file

@ -1,3 +1,4 @@
akka.enabled-modules = ["cluster"]
akka.event-handler-level = "DEBUG" akka.event-handler-level = "DEBUG"
akka.actor.deployment.service-hello.router = "round-robin" akka.actor.deployment.service-hello.router = "round-robin"
akka.actor.deployment.service-hello.clustered.preferred-nodes = ["node:node1"] akka.actor.deployment.service-hello.clustered.preferred-nodes = ["node:node1"]

View file

@ -1,4 +1,4 @@
akka.enabled-modules = ["cluster"]
akka.event-handler-level = "DEBUG" akka.event-handler-level = "DEBUG"
akka.actor.deployment.service-hello.router = "round-robin" akka.actor.deployment.service-hello.router = "round-robin"
akka.actor.deployment.service-hello.clustered.home = "node:node1"
akka.actor.deployment.service-hello.clustered.replicas = 1 akka.actor.deployment.service-hello.clustered.replicas = 1

View file

@ -1,5 +1,5 @@
akka.enabled-modules = ["cluster"]
akka.event-handler-level = "DEBUG" akka.event-handler-level = "DEBUG"
akka.actor.deployment.service-hello.router = "round-robin" akka.actor.deployment.service-hello.router = "round-robin"
akka.actor.deployment.service-hello.clustered.home = "node:node1" akka.actor.deployment.service-hello.clustered.preferred-nodes = ["node:node1","node:node2"]
akka.actor.deployment.service-hello.clustered.replicas = 2 akka.actor.deployment.service-hello.clustered.replicas = 2
akka.actor.deployment.service-hello.clustered.stateless = on

View file

@ -1,5 +1,5 @@
akka.enabled-modules = ["cluster"]
akka.event-handler-level = "DEBUG" akka.event-handler-level = "DEBUG"
akka.actor.deployment.service-hello.router = "round-robin" akka.actor.deployment.service-hello.router = "round-robin"
akka.actor.deployment.service-hello.clustered.home = "node:node1" akka.actor.deployment.service-hello.clustered.preferred-nodes = ["node:node1","node:node2"]
akka.actor.deployment.service-hello.clustered.replicas = 2 akka.actor.deployment.service-hello.clustered.replicas = 2
akka.actor.deployment.service-hello.clustered.stateless = on

View file

@ -1,5 +1,4 @@
akka.enabled-modules = ["cluster"]
akka.event-handler-level = "DEBUG" akka.event-handler-level = "DEBUG"
akka.actor.deployment.service-hello.router = "round-robin" akka.actor.deployment.service-hello.router = "round-robin"
akka.actor.deployment.service-hello.clustered.home = "node:node1"
akka.actor.deployment.service-hello.clustered.replicas = 3 akka.actor.deployment.service-hello.clustered.replicas = 3
akka.actor.deployment.service-hello.clustered.stateless = on

View file

@ -1,5 +1,4 @@
akka.enabled-modules = ["cluster"]
akka.event-handler-level = "DEBUG" akka.event-handler-level = "DEBUG"
akka.actor.deployment.service-hello.router = "round-robin" akka.actor.deployment.service-hello.router = "round-robin"
akka.actor.deployment.service-hello.clustered.home = "node:node1"
akka.actor.deployment.service-hello.clustered.replicas = 3 akka.actor.deployment.service-hello.clustered.replicas = 3
akka.actor.deployment.service-hello.clustered.stateless = on

View file

@ -1,5 +1,4 @@
akka.enabled-modules = ["cluster"]
akka.event-handler-level = "DEBUG" akka.event-handler-level = "DEBUG"
akka.actor.deployment.service-hello.router = "round-robin" akka.actor.deployment.service-hello.router = "round-robin"
akka.actor.deployment.service-hello.clustered.home = "node:node1"
akka.actor.deployment.service-hello.clustered.replicas = 3 akka.actor.deployment.service-hello.clustered.replicas = 3
akka.actor.deployment.service-hello.clustered.stateless = on

View file

@ -1,4 +1,5 @@
akka.enabled-modules = ["cluster"]
akka.event-handler-level = "DEBUG" akka.event-handler-level = "DEBUG"
akka.actor.deployment.service-hello.router = "round-robin" akka.actor.deployment.service-hello.router = "round-robin"
akka.actor.deployment.service-hello.clustered.home = "node:node1" akka.actor.deployment.service-hello.clustered.preferred-nodes = ["node:node1"]
akka.actor.deployment.service-hello.clustered.replicas = 1 akka.actor.deployment.service-hello.clustered.replicas = 1

View file

@ -1,4 +1,5 @@
akka.enabled-modules = ["cluster"]
akka.event-handler-level = "DEBUG" akka.event-handler-level = "DEBUG"
akka.actor.deployment.service-hello.router = "round-robin" akka.actor.deployment.service-hello.router = "round-robin"
akka.actor.deployment.service-hello.clustered.home = "node:node1" akka.actor.deployment.service-hello.clustered.preferred-nodes = ["node:node1"]
akka.actor.deployment.service-hello.clustered.replicas = 1 akka.actor.deployment.service-hello.clustered.replicas = 1

View file

@ -1,4 +1,5 @@
akka.enabled-modules = ["cluster"]
akka.event-handler-level = "DEBUG" akka.event-handler-level = "DEBUG"
akka.actor.deployment.service-hello.router = "round-robin" akka.actor.deployment.service-hello.router = "round-robin"
akka.actor.deployment.service-hello.clustered.home = "node:node1" akka.actor.deployment.service-hello.clustered.preferred-nodes = ["node:node1"]
akka.actor.deployment.service-hello.clustered.replicas = 1 akka.actor.deployment.service-hello.clustered.replicas = 1

View file

@ -1,4 +1,5 @@
akka.enabled-modules = ["cluster"]
akka.event-handler-level = "DEBUG" akka.event-handler-level = "DEBUG"
akka.actor.deployment.service-hello.router = "round-robin" akka.actor.deployment.service-hello.router = "round-robin"
akka.actor.deployment.service-hello.clustered.home = "node:node1" akka.actor.deployment.service-hello.clustered.preferred-nodes = ["node:node1"]
akka.actor.deployment.service-hello.clustered.replicas = 1 akka.actor.deployment.service-hello.clustered.replicas = 1

View file

@ -4,7 +4,7 @@ object SomeNode extends ClusterNodeWithConf{
def config() = " def config() = "
akka.event-handler-level = "DEBUG" akka.event-handler-level = "DEBUG"
akka.actor.deployment.service-hello.router = "round-robin" akka.actor.deployment.service-hello.router = "round-robin"
akka.actor.deployment.service-hello.clustered.home = "node:node1" akka.actor.deployment.service-hello.clustered.preferred-nodes = ["node:node1"]
akka.actor.deployment.service-hello.clustered.replicas = 1" akka.actor.deployment.service-hello.clustered.replicas = 1"
} }
} }