=act #18371 Warn if the default Java serializer is used

Unless the message is in akka.* or the configuration setting 'akka.actor.warn-about-java-serializer-usage'
is disabled a warning is logged for each class that the Java serializer is choosen for.
This commit is contained in:
Johan Andrén 2015-09-24 16:45:51 +02:00
parent 6b6a16637b
commit 146bb89e23
8 changed files with 43 additions and 3 deletions

View file

@ -177,6 +177,11 @@ class Serialization(val system: ExtendedActorSystem) extends Extension {
}
serializerMap.putIfAbsent(clazz, ser) match {
case null
if (shouldWarnAboutJavaSerializer(clazz, ser)) {
log.warning("Using the default Java serializer for class [{}] which is not recommended because of " +
"performance implications. Use another serializer or disable this warning using the setting " +
"'akka.actor.warn-about-java-serializer-usage'", clazz.getName)
}
log.debug("Using serializer[{}] for message [{}]", ser.getClass.getName, clazz.getName)
ser
case some some
@ -241,5 +246,10 @@ class Serialization(val system: ExtendedActorSystem) extends Extension {
val serializerByIdentity: Map[Int, Serializer] =
Map(NullSerializer.identifier -> NullSerializer) ++ serializers map { case (_, v) (v.identifier, v) }
private def shouldWarnAboutJavaSerializer(serializedClass: Class[_], serializer: Serializer) =
settings.config.getBoolean("akka.actor.warn-about-java-serializer-usage") &&
serializer.isInstanceOf[JavaSerializer] &&
!serializedClass.getName.startsWith("akka.")
}