Hi,
I have an instance of Keycloak 1.8.1 running which is configured to persist the sessions
stored in infinispan. I have added this change to the configuration in order to keep
sessions in case of a restart of the process or machine.
Configuration in standalone.xml looks like this:
<local-cache name="sessions”>
<file-store purge="false"/>
</local-cache>
After upgrading the Keycloak instance to version 1.9.2 the console includes the following
stacktrace when acessing the sessions in the admin UI. It also cannot load
org.keycloak.models.sessions.infinispan.entities.UserSessionEntity:
— - snip — -
17:49:07,056 ERROR [org.infinispan.persistence.file.SingleFileStore]
(persistence-thread--p9-t1) ISPN000252: Error executing parallel store task:
org.infinispan.persistence.spi.PersistenceException: java.io.InvalidClassException:
org.keycloak.models.sessions.infinispan.entities.ClientSessionEntity; Module load failed
at
org.infinispan.marshall.core.MarshalledEntryImpl.unmarshall(MarshalledEntryImpl.java:116)
at
org.infinispan.marshall.core.MarshalledEntryImpl.getValue(MarshalledEntryImpl.java:61)
at org.infinispan.persistence.PersistenceUtil.convert(PersistenceUtil.java:133)
at
org.infinispan.persistence.util.PersistenceManagerCloseableSupplier$SupplierCacheLoaderTask.processEntry(PersistenceManagerCloseableSupplier.java:75)
at org.infinispan.persistence.file.SingleFileStore$2.call(SingleFileStore.java:537)
at org.infinispan.persistence.file.SingleFileStore$2.call(SingleFileStore.java:531)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at
org.infinispan.util.concurrent.WithinThreadExecutor.execute(WithinThreadExecutor.java:21)
at
java.util.concurrent.ExecutorCompletionService.submit(ExecutorCompletionService.java:181)
at
org.infinispan.executors.ExecutorAllCompletionService.submit(ExecutorAllCompletionService.java:31)
at org.infinispan.persistence.file.SingleFileStore.process(SingleFileStore.java:531)
at
org.infinispan.persistence.manager.PersistenceManagerImpl.processOnAllStores(PersistenceManagerImpl.java:447)
at
org.infinispan.persistence.manager.PersistenceManagerImpl.processOnAllStores(PersistenceManagerImpl.java:432)
at
org.infinispan.persistence.util.PersistenceManagerCloseableSupplier.lambda$get$261(PersistenceManagerCloseableSupplier.java:115)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.io.InvalidClassException:
org.keycloak.models.sessions.infinispan.entities.ClientSessionEntity; Module load failed
at
org.jboss.marshalling.ModularClassResolver.resolveClass(ModularClassResolver.java:104)
at
org.jboss.marshalling.river.RiverUnmarshaller.doReadClassDescriptor(RiverUnmarshaller.java:948)
at
org.jboss.marshalling.river.RiverUnmarshaller.doReadNewObject(RiverUnmarshaller.java:1255)
at
org.jboss.marshalling.river.RiverUnmarshaller.doReadObject(RiverUnmarshaller.java:276)
at
org.jboss.marshalling.river.RiverUnmarshaller.doReadObject(RiverUnmarshaller.java:209)
at org.jboss.marshalling.AbstractObjectInput.readObject(AbstractObjectInput.java:41)
at
org.infinispan.commons.marshall.jboss.AbstractJBossMarshaller.objectFromObjectStream(AbstractJBossMarshaller.java:134)
at
org.infinispan.marshall.core.VersionAwareMarshaller.objectFromByteBuffer(VersionAwareMarshaller.java:101)
at
org.infinispan.commons.marshall.AbstractDelegatingMarshaller.objectFromByteBuffer(AbstractDelegatingMarshaller.java:80)
at
org.infinispan.marshall.core.MarshalledEntryImpl.unmarshall(MarshalledEntryImpl.java:114)
... 18 more
Caused by: org.jboss.modules.ModuleNotFoundException:
org.keycloak.keycloak-model-sessions-infinispan:main
at org.jboss.modules.ModuleLoader.loadModule(ModuleLoader.java:223)
at
org.jboss.marshalling.ModularClassResolver.resolveClass(ModularClassResolver.java:102)
... 27 more
- - snip - -
I assume that the sessions cannot be deserialized due to the module reorg in version 1.9.
Is this correct? How could the sessions be migrated to 1.9.x?
Cheers,
Martin