=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:
parent
6b6a16637b
commit
146bb89e23
8 changed files with 43 additions and 3 deletions
|
|
@ -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.")
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue