Skip to content

Deserialization issue with Kryo 5 in parallel testing #798

@nvollmar

Description

@nvollmar

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.

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions