From 72e2848394de78ebf326966ed34f661f2a4251c4 Mon Sep 17 00:00:00 2001 From: Roland Date: Sun, 2 Jun 2013 14:53:31 +0200 Subject: [PATCH] =?UTF-8?q?use=20original=20system=E2=80=99s=20default=20a?= =?UTF-8?q?ddress=20in=20serializedActorPath,=20see=20#3425?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/scala/akka/actor/dungeon/Children.scala | 2 +- .../scala/akka/serialization/Serialization.scala | 12 ++++++++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/akka-actor/src/main/scala/akka/actor/dungeon/Children.scala b/akka-actor/src/main/scala/akka/actor/dungeon/Children.scala index 0bd4d50a05..babbc71c1d 100644 --- a/akka-actor/src/main/scala/akka/actor/dungeon/Children.scala +++ b/akka-actor/src/main/scala/akka/actor/dungeon/Children.scala @@ -168,7 +168,7 @@ private[akka] trait Children { this: ActorCell ⇒ } private def makeChild(cell: ActorCell, props: Props, name: String, async: Boolean, systemService: Boolean): ActorRef = { - if (cell.system.settings.SerializeAllCreators && props.deploy.scope != LocalScope) + if (cell.system.settings.SerializeAllCreators && !systemService && props.deploy.scope != LocalScope) try { val ser = SerializationExtension(cell.system) props.args forall (arg ⇒ diff --git a/akka-actor/src/main/scala/akka/serialization/Serialization.scala b/akka-actor/src/main/scala/akka/serialization/Serialization.scala index 64f1031c3a..09099b1c66 100644 --- a/akka-actor/src/main/scala/akka/serialization/Serialization.scala +++ b/akka-actor/src/main/scala/akka/serialization/Serialization.scala @@ -12,6 +12,7 @@ import scala.collection.mutable.ArrayBuffer import java.io.NotSerializableException import scala.util.{ Try, DynamicVariable } import scala.collection.immutable +import scala.util.control.NonFatal object Serialization { @@ -55,7 +56,12 @@ object Serialization { case _ ⇒ null } Serialization.currentTransportInformation.value match { - case null ⇒ path.toSerializationFormat + case null ⇒ originalSystem match { + case null ⇒ path.toSerializationFormat + case system ⇒ + try path.toSerializationFormatWithAddress(system.provider.getDefaultAddress) + catch { case NonFatal(_) ⇒ path.toSerializationFormat } + } case Information(address, system) ⇒ if (originalSystem == null || originalSystem == system) path.toSerializationFormatWithAddress(address) @@ -136,7 +142,9 @@ class Serialization(val system: ExtendedActorSystem) extends Extension { possibilities(0)._2 } serializerMap.putIfAbsent(clazz, ser) match { - case null ⇒ log.debug("Using serializer[{}] for message [{}]", ser.getClass.getName, clazz.getName); ser + case null ⇒ + log.debug("Using serializer[{}] for message [{}]", ser.getClass.getName, clazz.getName) + ser case some ⇒ some } case ser ⇒ ser