diff --git a/akka-actor/src/main/scala/akka/remoteinterface/RemoteInterface.scala b/akka-actor/src/main/scala/akka/remoteinterface/RemoteInterface.scala index 29d8185ef2..e9e4168995 100644 --- a/akka-actor/src/main/scala/akka/remoteinterface/RemoteInterface.scala +++ b/akka-actor/src/main/scala/akka/remoteinterface/RemoteInterface.scala @@ -20,7 +20,7 @@ trait RemoteModule { val UUID_PREFIX = "uuid:".intern def optimizeLocalScoped_?(): Boolean //Apply optimizations for remote operations in local scope - protected[akka] def notifyListeners(message: Any): Unit + protected[akka] def notifyListeners(message: => Any): Unit private[akka] def actors: ConcurrentHashMap[String, ActorRef] private[akka] def actorsByUuid: ConcurrentHashMap[String, ActorRef] @@ -227,7 +227,7 @@ abstract class RemoteSupport extends ListenerManagement with RemoteServerModule } protected override def manageLifeCycleOfListeners = false - protected[akka] override def notifyListeners(message: Any): Unit = super.notifyListeners(message) + protected[akka] override def notifyListeners(message: => Any): Unit = super.notifyListeners(message) private[akka] val actors = new ConcurrentHashMap[String, ActorRef] private[akka] val actorsByUuid = new ConcurrentHashMap[String, ActorRef] diff --git a/akka-actor/src/main/scala/akka/util/ListenerManagement.scala b/akka-actor/src/main/scala/akka/util/ListenerManagement.scala index 9417f954ee..916fac9c6a 100644 --- a/akka-actor/src/main/scala/akka/util/ListenerManagement.scala +++ b/akka-actor/src/main/scala/akka/util/ListenerManagement.scala @@ -50,12 +50,13 @@ trait ListenerManagement { */ def hasListener(listener: ActorRef): Boolean = listeners.contains(listener) - protected[akka] def notifyListeners(message: Any) { + protected[akka] def notifyListeners(message: => Any) { if (hasListeners) { + val msg = message val iterator = listeners.iterator while (iterator.hasNext) { val listener = iterator.next - if (listener.isRunning) listener ! message + if (listener.isRunning) listener ! msg } } }