diff --git a/akka-actor/src/main/scala/akka/actor/Actor.scala b/akka-actor/src/main/scala/akka/actor/Actor.scala index e9d51703a8..3c44265013 100644 --- a/akka-actor/src/main/scala/akka/actor/Actor.scala +++ b/akka-actor/src/main/scala/akka/actor/Actor.scala @@ -313,6 +313,18 @@ object Actor extends ListenerManagement { createActor(address, () ⇒ new LocalActorRef(() ⇒ creator.create, address, Transient)) } + def localActorOf[T <: Actor: Manifest]: ActorRef = { + newLocalActorRef(manifest[T].erasure.asInstanceOf[Class[_ <: Actor]], new UUID().toString) + } + + def localActorOf[T <: Actor](clazz: Class[T]): ActorRef = { + newLocalActorRef(clazz, new UUID().toString) + } + + def localActorOf[T <: Actor](factory: ⇒ T): ActorRef = { + new LocalActorRef(() ⇒ factory, new UUID().toString, Transient) + } + /** * Use to spawn out a block of code in an event-driven actor. Will shut actor down when * the block has been executed. diff --git a/akka-actor/src/main/scala/akka/event/EventHandler.scala b/akka-actor/src/main/scala/akka/event/EventHandler.scala index 28adf4946d..39fcf0bb2a 100644 --- a/akka-actor/src/main/scala/akka/event/EventHandler.scala +++ b/akka-actor/src/main/scala/akka/event/EventHandler.scala @@ -17,7 +17,7 @@ import akka.AkkaException *
* Create, add and remove a listener: *
- * val eventHandlerListener = Actor.actorOf(new Actor {
+ * val eventHandlerListener = Actor.localActorOf(new Actor {
* self.dispatcher = EventHandler.EventHandlerDispatcher
*
* def receive = {
@@ -111,7 +111,7 @@ object EventHandler extends ListenerManagement {
defaultListeners foreach { listenerName ⇒
try {
ReflectiveAccess.getClassFor[Actor](listenerName) match {
- case r: Right[_, Class[Actor]] ⇒ addListener(Actor.actorOf(r.b, listenerName).start())
+ case r: Right[_, Class[Actor]] ⇒ addListener(Actor.localActorOf(r.b).start())
case l: Left[Exception, _] ⇒ throw l.a
}
} catch {
diff --git a/akka-cluster/src/main/scala/akka/cluster/Cluster.scala b/akka-cluster/src/main/scala/akka/cluster/Cluster.scala
index 0fec08d25a..dafd191f55 100644
--- a/akka-cluster/src/main/scala/akka/cluster/Cluster.scala
+++ b/akka-cluster/src/main/scala/akka/cluster/Cluster.scala
@@ -1281,7 +1281,7 @@ class DefaultClusterNode private[akka] (
}
private[cluster] def joinMembershipNode() {
- nodeNameToAddress.put(nodeAddress.nodeName, remoteServerAddress)
+ nodeNameToAddress += (nodeAddress.nodeName -> remoteServerAddress)
try {
EventHandler.info(this,
"Joining cluster as membership node [%s] on [%s]".format(nodeAddress, membershipNodePath))
@@ -1350,7 +1350,7 @@ class DefaultClusterNode private[akka] (
}
// notify all available nodes that they should fail-over all connections from 'from' to 'to'
- val from = nodeNameToAddress.get(failedNodeName)
+ val from = nodeNameToAddress(failedNodeName)
val to = remoteServerAddress
Serialization.serialize((from, to)) match {
case Left(error) ⇒ throw error
@@ -1527,12 +1527,12 @@ class MembershipChildListener(self: ClusterNode) extends IZkChildListener with E
"MembershipChildListener at [%s] has children [%s]"
.format(self.nodeAddress.nodeName, childList.mkString(" ")))
self.findNewlyConnectedMembershipNodes(childList) foreach { name ⇒
- self.nodeNameToAddress.put(name, self.addressForNode(name)) // update 'nodename-address' map
+ self.addressForNode(name) foreach (address ⇒ self.nodeNameToAddress += (name -> address)) // update 'nodename-address' map
self.publish(NodeConnected(name))
}
self.findNewlyDisconnectedMembershipNodes(childList) foreach { name ⇒
- self.nodeNameToAddress.remove(name) // update 'nodename-address' map
+ self.nodeNameToAddress - name // update 'nodename-address' map
self.publish(NodeDisconnected(name))
}
diff --git a/akka-cluster/src/main/scala/akka/cluster/ClusterDeployer.scala b/akka-cluster/src/main/scala/akka/cluster/ClusterDeployer.scala
index 070a52d96b..e24fb43367 100644
--- a/akka-cluster/src/main/scala/akka/cluster/ClusterDeployer.scala
+++ b/akka-cluster/src/main/scala/akka/cluster/ClusterDeployer.scala
@@ -21,7 +21,7 @@ import scala.collection.JavaConversions.collectionAsScalaIterable
import com.eaio.uuid.UUID
-import java.util.concurrent.CountDownLatch
+import java.util.concurrent.{ CountDownLatch, TimeUnit }
import java.util.concurrent.atomic.AtomicReference
/**
@@ -154,7 +154,7 @@ object ClusterDeployer {
deploymentInProgressLock.unlock() // signal deployment complete
} else {
- deploymentCompleted.await() // wait until deployment is completed by other "master" node
+ deploymentCompleted.await(30, TimeUnit.SECONDS) // wait until deployment is completed by other "master" node
}
}