java.lang.NoSuchFieldException: parentOffset
Closed this issue · 1 comments
prowave commented
Please see the details below. Any guidance is appreciated.
We are using TC8.5 in AWS with Elasticache.
I have these jars in my $TOMCAT_HOME/lib
AmazonElastiCacheClusterClient-no-version.jar
memcached-session-manager-1.9.5.jar
memcached-session-manager-tc8-1.9.5.jar
JDK is Corretto 11
We started getting this error (I believe) after the update to JDK 11.
12-Feb-2021 01:21:29.036 WARNING [msm-storage-thread-1] de.javakaffee.web.msm.BackupSessionTask.call FAILED for session id FBDDF4F0193D7386B1E7BF727E19CD48
java.lang.RuntimeException: java.lang.NoSuchFieldException: parentOffset
at de.javakaffee.kryoserializers.SubListSerializers$ArrayListSubListSerializer.<init>(SubListSerializers.java:105)
at de.javakaffee.kryoserializers.SubListSerializers$ArrayListSubListSerializer.addDefaultSerializer(SubListSerializers.java:121)
at de.javakaffee.kryoserializers.SubListSerializers.addDefaultSerializers(SubListSerializers.java:78)
at de.javakaffee.web.msm.serializer.kryo.KryoTranscoder$2.create(KryoTranscoder.java:127)
at com.esotericsoftware.kryo.pool.KryoPoolQueueImpl.borrow(KryoPoolQueueImpl.java:51)
at de.javakaffee.web.msm.serializer.kryo.KryoTranscoder.serializeAttributes(KryoTranscoder.java:224)
at de.javakaffee.web.msm.TranscoderService.serializeAttributes(TranscoderService.java:151)
at de.javakaffee.web.msm.BackupSessionTask.serializeAttributes(BackupSessionTask.java:180)
at de.javakaffee.web.msm.BackupSessionTask.call(BackupSessionTask.java:110)
at de.javakaffee.web.msm.BackupSessionTask.call(BackupSessionTask.java:51)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: java.lang.NoSuchFieldException: parentOffset
at java.base/java.lang.Class.getDeclaredField(Class.java:2411)
at de.javakaffee.kryoserializers.SubListSerializers$ArrayListSubListSerializer.<init>(SubListSerializers.java:99)
... 13 more
prowave commented
This dependency combination allows you to use this with Tomcat 8.5 /JDK 11.
It upgrades the kryo-serializers to incorporate the JDK 9+ fix, and then maintains the kryo version that has the KryoFactory
interface that version 2.3.2
still uses.
runtimeOnly 'de.javakaffee.msm:msm-kryo-serializer:2.3.2'
runtimeOnly 'de.javakaffee:kryo-serializers:0.45'
runtimeOnly 'com.esotericsoftware:kryo:4.0.0'