Hi
I am trying to do a simple master slave scenario where the master
remotely deploys its workers to a remote node. I have based my code on
what is written in the documentation. I am using java and Akka 2.0.
The slave node just starts an akka system with remoting enabled and
the code that is run on the master is the following:
"
Address addr = new Address("akka", AkkaConstants.AKKA_SYSTEM_NAME,
"127.0.0.1", 2553);
ActorRef ref = context().system().actorOf(new
Props(CommandWorker.class).withDeploy(new Deploy(new
RemoteScope(addr))));
"
This code is executed within an actor as an action in response to an
incoming message. I am getting an java.io.NotSerializableException
referring to the akka.remote.netty.NettyRemoteTransport class. To me
it seems odd that this class should be serialized at all or what am I
missing / doing wrong here?
Full log from master with some debugging enabled:
[DEBUG] [03/06/2012 16:46:24.826] [main] [EventStream(akka://
Itemizer)] logger log1-Logging$DefaultLogger started
[DEBUG] [03/06/2012 16:46:24.832] [main] [EventStream(akka://
Itemizer)] Default Loggers started
[DEBUG] [03/06/2012 16:46:25.8] [main]
[akka.serialization.Serialization(akka://Itemizer)] Using
serializer[akka.serialization.JavaSerializer] for message
[akka.event.Logging$Info]
[INFO] [03/06/2012 16:46:25.9] [main] [ActorSystem(Itemizer)] REMOTE:
RemoteServerStarted@akka://
Item...@127.0.0.1:2552
[DEBUG] [03/06/2012 16:46:25.14] [Itemizer-akka.actor.default-
dispatcher-2] [akka.serialization.Serialization(akka://Itemizer)]
Using serializer[akka.serialization.JavaSerializer] for message
[akka.remote.RemoteActorRefProvider$$anonfun$1]
[INFO] [03/06/2012 16:46:25.20] [main] [ActorSystem(Itemizer)]
Booting..
[DEBUG] [03/06/2012 16:46:25.26] [Itemizer-akka.actor.default-
dispatcher-3] [akka.serialization.Serialization(akka://Itemizer)]
Using serializer[akka.serialization.JavaSerializer] for message
[akka.actor.Props$$anonfun$$init$$2]
[INFO] [03/06/2012 16:46:25.31] [main] [ActorSystem(Itemizer)]
Finished booting
[DEBUG] [03/06/2012 16:46:25.37] [main]
[akka.serialization.Serialization(akka://Itemizer)] Using
serializer[akka.serialization.JavaSerializer] for message
[com.itemizer.framework.actor.message.ConfigurationManagerDiscovered]
[INFO] [03/06/2012 16:46:25.67] [Itemizer-akka.actor.default-
dispatcher-2] [akka://Itemizer/user/systemManager] Received message:
com.itemizer.framework.actor.message.ConfigurationManagerDiscovered@1615f43d
[DEBUG] [03/06/2012 16:46:25.68] [Itemizer-akka.actor.default-
dispatcher-2] [akka.serialization.Serialization(akka://Itemizer)]
Using serializer[akka.serialization.JavaSerializer] for message
[com.itemizer.framework.actor.message.RegisterSystem]
[INFO] [03/06/2012 16:46:25.70] [Itemizer-akka.actor.default-
dispatcher-3] [akka://Itemizer/user/configurationManager] Received
message: com.itemizer.framework.actor.message.RegisterSystem@591913b3
[INFO] [03/06/2012 16:46:25.76] [Itemizer-akka.actor.default-
dispatcher-3] [akka://Itemizer/user/configurationManager] System
registered: akka://Itemizer/user/systemManager
[DEBUG] [03/06/2012 16:46:25.77] [Itemizer-akka.actor.default-
dispatcher-3] [akka.serialization.Serialization(akka://Itemizer)]
Using serializer[akka.serialization.JavaSerializer] for message
[com.itemizer.framework.actor.message.SystemRegistrationStatus]
[DEBUG] [03/06/2012 16:46:25.83] [Itemizer-akka.actor.default-
dispatcher-3] [akka.serialization.Serialization(akka://Itemizer)]
Using serializer[akka.serialization.JavaSerializer] for message
[com.itemizer.framework.actor.message.StartSystem]
[INFO] [03/06/2012 16:46:25.84] [Itemizer-akka.actor.default-
dispatcher-3] [akka://Itemizer/user/systemManager] Received message:
com.itemizer.framework.actor.message.StartSystem@3bddf948
[DEBUG] [03/06/2012 16:46:25.85] [Itemizer-akka.actor.default-
dispatcher-3] [akka.serialization.Serialization(akka://Itemizer)]
Using serializer[akka.serialization.JavaSerializer] for message
[akka.actor.CreateRandomNameChild]
[DEBUG] [03/06/2012 16:46:25.97] [Itemizer-akka.actor.default-
dispatcher-2] [RemoteActorRefProvider(null)] [akka://Itemizer/]
Instantiating Remote Actor [akka://
Item...@127.0.0.1:2553/remote/
Item...@127.0.0.1:2552/user/$a]
[DEBUG] [03/06/2012 16:46:25.105] [Itemizer-akka.actor.default-
dispatcher-2] [RemoteClient(akka://Itemizer)] Starting remote client
connection to [akka://Item...@127.0.0.1:2553|/
127.0.0.1]
[DEBUG] [03/06/2012 16:46:25.229] [Itemizer-akka.actor.default-
dispatcher-2] [akka.serialization.Serialization(akka://Itemizer)]
Using serializer[akka.serialization.JavaSerializer] for message
[akka.remote.RemoteClientStarted]
mar 06, 2012 4:46:25 EM org.jboss.netty.channel.StaticChannelPipeline
WARNING: An exception was thrown by a user handler while handling an
exception event ([id: 0x4d1650df, /
127.0.0.1:50934 => /
127.0.0.1:2553]
EXCEPTION: java.io.NotSerializableException:
akka.remote.netty.NettyRemoteTransport)
java.io.NotSerializableException:
akka.remote.netty.NettyRemoteTransport
at java.io.ObjectOutputStream.writeObject0(Unknown Source)
at java.io.ObjectOutputStream.defaultWriteFields(Unknown Source)
at java.io.ObjectOutputStream.writeSerialData(Unknown Source)
at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
at java.io.ObjectOutputStream.writeObject0(Unknown Source)
at java.io.ObjectOutputStream.writeObject(Unknown Source)
at akka.serialization.JavaSerializer$$anonfun$toBinary$1.apply$mcV
$sp(Serializer.scala:114)
at akka.serialization.JavaSerializer$$anonfun$toBinary
$1.apply(Serializer.scala:114)
at akka.serialization.JavaSerializer$$anonfun$toBinary
$1.apply(Serializer.scala:114)
at scala.util.DynamicVariable.withValue(DynamicVariable.scala:57)
at akka.serialization.JavaSerializer.toBinary(Serializer.scala:114)
at akka.serialization.Serialization.serialize(Serialization.scala:62)
at akka.dispatch.Envelope.<init>(AbstractDispatcher.scala:27)
at akka.actor.ActorCell.tell(ActorCell.scala:475)
at akka.actor.LocalActorRef.$bang(ActorRef.scala:322)
at akka.event.EventStream.publish(EventStream.scala:37)
at akka.event.EventStream.publish(EventStream.scala:23)
at akka.event.SubchannelClassification$$anonfun$publish
$1.apply(EventBus.scala:172)
at akka.event.SubchannelClassification$$anonfun$publish
$1.apply(EventBus.scala:172)
at scala.collection.immutable.Set$Set1.foreach(Set.scala:86)
at akka.event.SubchannelClassification$class.publish(EventBus.scala:
172)
at akka.event.EventStream.publish(EventStream.scala:23)
at akka.remote.RemoteTransport.notifyListeners(RemoteTransport.scala:
193)
at akka.remote.netty.ActiveRemoteClient.notifyListeners(Client.scala:
121)
at
akka.remote.netty.ActiveRemoteClientHandler.exceptionCaught(Client.scala:
317)
at
org.jboss.netty.handler.timeout.IdleStateAwareChannelHandler.handleUpstream(IdleStateAwareChannelHandler.java:
43)
at
org.jboss.netty.handler.execution.ChannelUpstreamEventRunnable.run(ChannelUpstreamEventRunnable.java:
44)
at
org.jboss.netty.handler.execution.OrderedMemoryAwareThreadPoolExecutor
$ChildExecutor.run(OrderedMemoryAwareThreadPoolExecutor.java:312)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
[DEBUG] [03/06/2012 16:46:25.239] [Itemizer-6]
[akka.serialization.Serialization(akka://Itemizer)] Using
serializer[akka.serialization.JavaSerializer] for message
[akka.remote.RemoteClientConnected]
[DEBUG] [03/06/2012 16:46:25.243] [Itemizer-6]
[akka.serialization.Serialization(akka://Itemizer)] Using
serializer[akka.serialization.JavaSerializer] for message
[akka.remote.RemoteClientError]