Hello there,
I am building a micro-service that uses akka-cluster. I am running into an issue with serialization. I am using akka 2.4.16 and scala 2.11.
These warnings have started to come when I switched from default java-serialization to kryo. I am using "com.github.romix.akka:akka-kryo-serialization_211:0.4.2" of akka-kryo and have added the following into the config...
kryo {
type = "graph"
idstrategy = "default"
resolve-subclasses = true
kryo-custom-serializer-init = "com.wd.perf.scheduler.swh.utils.KryoInit"
}serializers {
akka-cluster = "akka.cluster.protobuf.ClusterMessageSerializer"
java = "akka.serialization.JavaSerializer"
kryo = "com.romix.akka.serialization.kryo.KryoSerializer"
//proto = "akka.remote.serialization.ProtobufSerializer"
}
serialization-bindings {
"akka.cluster.ClusterMessage" = akka-cluster
//"akka.cluster.routing.ClusterRouterPool" = akka-cluster
"java.io.Serializable" = none
"java.lang.String" = kryo
"java.lang.Boolean" = kryo
//"com.google.protobuf.Message" = proto
"scala.Product" = kryo
"akka.actor.ActorRef" = kryo
"scala.collection.immutable.TreeMap" = kryo
"[Lscala.collection.immutable.TreeMap;" = kryo
"scala.collection.mutable.HashMap" = kryo
"[Lscala.collection.mutable.HashMap;" = kryo
"scala.collection.immutable.HashMap" = kryo
"[Lscala.collection.immutable.HashMap;" = kryo
"scala.collection.mutable.AnyRefMap" = kryo
"[Lscala.collection.mutable.AnyRefMap;" = kryo
"scala.collection.immutable.LongMap" = kryo
"[Lscala.collection.immutable.LongMap;" = kryo
"scala.collection.mutable.LongMap" = kryo
"[Lscala.collection.mutable.LongMap;" = kryo
"scala.collection.immutable.HashSet" = kryo
"[Lscala.collection.immutable.HashSet;" = kryo
"scala.collection.immutable.TreeSet" = kryo
"[Lscala.collection.immutable.TreeSet;" = kryo
"scala.collection.immutable.BitSet" = kryo
"[Lscala.collection.immutable.BitSet;" = kryo
"scala.collection.mutable.HashSet" = kryo
"[Lscala.collection.mutable.HashSet;" = kryo
"scala.collection.mutable.TreeSet" = kryo
"[Lscala.collection.mutable.TreeSet;" = kryo
"scala.collection.mutable.BitSet" = kryo
"[Lscala.collection.mutable.BitSet;" = kryo
"scala.collection.immutable.Vector" = kryo
"[Lscala.collection.immutable.Vector;" = kryo
"[Ljava.lang.Object;" = kryo
"[[I" = kryo
}
serialization-identifiers {
"akka.cluster.protobuf.ClusterMessageSerializer" = 5
}
I could only get it past errors to the following warnings, after I had added "akka-cluster" in the application.conf (which I copied from reference.conf of akka-cluster).
[WARN] [SECURITY][08/28/2017 09:19:03.286] [sftp-scheduler-akka.remote.default-remote-dispatcher-14] [akka.serialization.Serialization(akka://sftp-scheduler)] Multiple serializers found for class akka.cluster.InternalClusterAction$InitJoin$, choosing first: Vector((interface scala.Product,com.romix.akka.serialization.kryo.KryoSerializer@40d4d844), (interface akka.cluster.ClusterMessage,akka.cluster.protobuf.ClusterMessageSerializer@36ccff98))
[WARN] [SECURITY][08/28/2017 09:19:03.355] [sftp-scheduler-akka.remote.default-remote-dispatcher-15] [akka.serialization.Serialization(akka://sftp-scheduler)] Multiple serializers found for class akka.cluster.InternalClusterAction$Join, choosing first: Vector((interface scala.Product,com.romix.akka.serialization.kryo.KryoSerializer@40d4d844), (interface akka.cluster.ClusterMessage,akka.cluster.protobuf.ClusterMessageSerializer@36ccff98))
[WARN] [SECURITY][08/28/2017 09:19:03.369] [sftp-scheduler-akka.remote.default-remote-dispatcher-15] [akka.serialization.Serialization(akka://sftp-scheduler)] Multiple serializers found for class akka.cluster.ClusterHeartbeatSender$HeartbeatRsp, choosing first: Vector((interface scala.Product,com.romix.akka.serialization.kryo.KryoSerializer@40d4d844), (interface akka.cluster.ClusterMessage,akka.cluster.protobuf.ClusterMessageSerializer@36ccff98))
Also, I wonder if I may be able to use Remoting-Artery in-place of netty while using clustering?
Please advice on what could be the next steps.
Thanks,
Muthu