-
Notifications
You must be signed in to change notification settings - Fork 842
Closed
Labels
Description
Since updating to Kryo 5 we are experience a weird deserialization failure when running tests parallel on multiple Akka actor systems in the same JVM. We could not reproduce this while running tests sequential nor did this ever happen with Kryo 4.
Unable to find class: uth-store-syncer
Serialization trace:
value (scala.Some)
techInitiator (jaso.commons.security.SecurityCtx)
securityCtx (jaso.general.user.api.UserV0$DrctQryUserWithIdentity)
com.esotericsoftware.kryo.KryoException: Unable to find class: uth-store-syncer
Serialization trace:
value (scala.Some)
techInitiator (jaso.commons.security.SecurityCtx)
securityCtx (jaso.general.user.api.UserV0$DrctQryUserWithIdentity)
at com.esotericsoftware.kryo.util.DefaultClassResolver.readName(DefaultClassResolver.java:190)
at com.esotericsoftware.kryo.util.DefaultClassResolver.readClass(DefaultClassResolver.java:159)
at com.esotericsoftware.kryo.Kryo.readClass(Kryo.java:691)
at com.esotericsoftware.kryo.serializers.ReflectField.read(ReflectField.java:118)
at com.esotericsoftware.kryo.serializers.FieldSerializer.read(FieldSerializer.java:124)
at com.esotericsoftware.kryo.Kryo.readObject(Kryo.java:729)
at com.esotericsoftware.kryo.serializers.ReflectField.read(ReflectField.java:125)
at com.esotericsoftware.kryo.serializers.FieldSerializer.read(FieldSerializer.java:124)
at com.esotericsoftware.kryo.Kryo.readObjectOrNull(Kryo.java:780)
at com.esotericsoftware.kryo.serializers.ReflectField.read(ReflectField.java:134)
Caused by: java.lang.ClassNotFoundException: uth-store-syncer
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:604)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
at java.base/java.lang.Class.forName0(Native Method)
at java.base/java.lang.Class.forName(Class.java:416)
at com.esotericsoftware.kryo.util.DefaultClassResolver.readName(DefaultClassResolver.java:184)
at com.esotericsoftware.kryo.util.DefaultClassResolver.readClass(DefaultClassResolver.java:159)
at com.esotericsoftware.kryo.Kryo.readClass(Kryo.java:691)
at com.esotericsoftware.kryo.serializers.ReflectField.read(ReflectField.java:118)
at com.esotericsoftware.kryo.serializers.FieldSerializer.read(FieldSerializer.java:124)
The issue occurs deserializing a plain String
, the field serializer tries to load a class by name with the content instead of just using that value. Any insight into what's going wrong would be very helpful.