From e7a075a0d973f39f9d607b6dfd5f44eaf8f055e3 Mon Sep 17 00:00:00 2001 From: Patrik Nordwall Date: Thu, 27 Sep 2012 09:20:52 +0200 Subject: [PATCH] foreachChild instead of allChildren, see #2552 --- akka-actor/src/main/scala/akka/actor/ActorRef.scala | 8 ++++---- akka-remote/src/main/scala/akka/remote/RemoteDaemon.scala | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/akka-actor/src/main/scala/akka/actor/ActorRef.scala b/akka-actor/src/main/scala/akka/actor/ActorRef.scala index b8b2164403..65e8568832 100644 --- a/akka-actor/src/main/scala/akka/actor/ActorRef.scala +++ b/akka-actor/src/main/scala/akka/actor/ActorRef.scala @@ -10,7 +10,7 @@ import java.lang.{ UnsupportedOperationException, IllegalStateException } import akka.serialization.{ Serialization, JavaSerializer } import akka.event.EventStream import scala.annotation.tailrec -import java.util.concurrent.{ ConcurrentHashMap } +import java.util.concurrent.ConcurrentHashMap import akka.event.LoggingAdapter import scala.concurrent.forkjoin.ThreadLocalRandom import scala.collection.JavaConverters @@ -520,8 +520,8 @@ private[akka] class VirtualPathContainer( def hasChildren: Boolean = !children.isEmpty - def allChildren: Iterable[ActorRef] = { - import scala.collection.JavaConverters._ - children.values.asScala + def foreachChild(f: ActorRef ⇒ Unit) = { + val iter = children.values.iterator + while (iter.hasNext) f(iter.next) } } diff --git a/akka-remote/src/main/scala/akka/remote/RemoteDaemon.scala b/akka-remote/src/main/scala/akka/remote/RemoteDaemon.scala index 4bf4f18e7a..83c316f56e 100644 --- a/akka-remote/src/main/scala/akka/remote/RemoteDaemon.scala +++ b/akka-remote/src/main/scala/akka/remote/RemoteDaemon.scala @@ -90,11 +90,11 @@ private[akka] class RemoteSystemDaemon(system: ActorSystemImpl, _path: ActorPath case TerminationHook ⇒ terminating.switchOn { terminationHookDoneWhenNoChildren() - allChildren foreach system.stop + foreachChild { system.stop(_) } } case AddressTerminated(address) ⇒ - allChildren foreach { case a: InternalActorRef if a.getParent.path.address == address ⇒ system.stop(a) } + foreachChild { case a: InternalActorRef if a.getParent.path.address == address ⇒ system.stop(a) } case unknown ⇒ log.warning("Unknown message {} received by {}", unknown, this) }