1

I am trying to update the Hibernate version of my WildFly 18.0.1 server. But I encounter a problem with Infinispan, which is used for caching. The classic WildFly distribution hast Hibernate 5.3.13.Final and Infinispan 9.4.16.Final.

In order to update I use the wildfly-server-provisioning-maven-plugin with the following server-provisioning.xml:

<server-provisioning xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="urn:wildfly:server-provisioning:1.2" extract-schemas="true" copy-module-artifacts="true"
                 extract-schemas-groups="org.jboss.as org.wildfly org.wildfly.core org.jboss.metadata">
<feature-packs>
    <feature-pack
            groupId="org.hibernate"
            artifactId="hibernate-orm-jbossmodules"
            version="5.4.12.Final" />
    <feature-pack
            groupId="org.hibernate"
            artifactId="hibernate-search-jbossmodules-orm"
            version="5.10.7.Final" />
    <feature-pack
            groupId="org.infinispan"
            artifactId="infinispan-feature-pack-client"
            version="10.1.2.Final" />
    <feature-pack
            groupId="org.infinispan"
            artifactId="infinispan-feature-pack-client"
            version="10.1.2.Final" />
    <feature-pack
            groupId="org.infinispan"
            artifactId="infinispan-feature-pack-embedded"
            version="10.1.2.Final" />
    <feature-pack
            groupId="org.infinispan"
            artifactId="infinispan-feature-pack-embedded-query"
            version="10.1.2.Final" />
    <feature-pack
            groupId="org.infinispan"
            artifactId="infinispan-feature-pack-commons"
            version="10.1.2.Final" />
    <feature-pack
            groupId="org.infinispan"
            artifactId="infinispan-feature-pack-wf-modules"
            version="10.1.2.Final" />
    <feature-pack
            groupId="org.hibernate.lucene-jbossmodules"
            artifactId="lucene-jbossmodules"
            version="5.5.5.hibernate06"/>
    <feature-pack
            groupId="org.wildfly"
            artifactId="wildfly-feature-pack"
            version="${wildfly.version}" />
</feature-packs>

I have tried different verions like 9.4.18.Final or 10.0.1.Final. Using the built WildFly with the new versions I get the following exception:

15:40:15,510 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-2) MSC000001: Failed to start service org.wildfly.clustering.infinispan.cache-container.hibernate: org.jboss.msc.service.StartException in service org.wildfly.clustering.infinispan.cache-container.hibernate: java.lang.NoClassDefFoundError: Failed to link org/infinispan/hibernate/cache/commons/util/SecondLevelCacheMetadataModuleFinder (Module "org.infinispan.hibernate-cache" version 9.4.16.Final from local module loader @5f2108b5 (finder: local module finder @31a5c39e (roots: D:\Dev\Servers\wildfly-hibernate-5.4.11\modules,D:\Dev\Servers\wildfly-hibernate-5.4.11\modules\system\layers\base,D:\Dev\Servers\wildfly-hibernate-5.4.11\modules\system\add-ons\ispn))): org/infinispan/factories/components/ModuleMetadataFileFinder
at org.wildfly.clustering.service.FunctionalService.start(FunctionalService.java:70)
at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1739)
at org.jboss.msc.service.ServiceControllerImpl$StartTask.execute(ServiceControllerImpl.java:1701)
at org.jboss.msc.service.ServiceControllerImpl$ControllerTask.run(ServiceControllerImpl.java:1559)
at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:1982)
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1486)
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1377)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.NoClassDefFoundError: Failed to link org/infinispan/hibernate/cache/commons/util/SecondLevelCacheMetadataModuleFinder (Module "org.infinispan.hibernate-cache" version 9.4.16.Final from local module loader @5f2108b5 (finder: local module finder @31a5c39e (roots: D:\Dev\Servers\wildfly-hibernate-5.4.11\modules,D:\Dev\Servers\wildfly-hibernate-5.4.11\modules\system\layers\base,D:\Dev\Servers\wildfly-hibernate-5.4.11\modules\system\add-ons\ispn))): org/infinispan/factories/components/ModuleMetadataFileFinder
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
at org.jboss.modules.ModuleClassLoader.doDefineOrLoadClass(ModuleClassLoader.java:423)
at org.jboss.modules.ModuleClassLoader.defineClass(ModuleClassLoader.java:555)
at org.jboss.modules.ModuleClassLoader.loadClassLocal(ModuleClassLoader.java:339)
at org.jboss.modules.ModuleClassLoader$1.loadClassLocal(ModuleClassLoader.java:126)
at org.jboss.modules.Module.loadModuleClass(Module.java:731)
at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:247)
at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:410)
at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:398)
at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:116)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:370)
at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:404)
at java.util.ServiceLoader$1.next(ServiceLoader.java:480)
at org.infinispan.commons.util.ServiceFinder.addServices(ServiceFinder.java:63)
at org.infinispan.commons.util.ServiceFinder.load(ServiceFinder.java:44)
at org.infinispan.util.ModuleProperties.getModuleMetadataFiles(ModuleProperties.java:47)
at org.infinispan.factories.GlobalComponentRegistry.<init>(GlobalComponentRegistry.java:107)
at org.infinispan.manager.DefaultCacheManager.<init>(DefaultCacheManager.java:257)
at org.jboss.as.clustering.infinispan.subsystem.CacheContainerServiceConfigurator.get(CacheContainerServiceConfigurator.java:100)
at org.jboss.as.clustering.infinispan.subsystem.CacheContainerServiceConfigurator.get(CacheContainerServiceConfigurator.java:73)
at org.wildfly.clustering.service.FunctionalService.start(FunctionalService.java:67)
... 8 more

How I understand it this exception is thrown because the module org.infinispan.hibernate-cache is missing in the update. Since I could not figure out how to update it, I added the jars manually. If I am using Infinispan 10.1.2.Final and add the hibernate-cache module I still get an exception:

15:43:53,638 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-2) MSC000001: Failed to start service org.wildfly.clustering.infinispan.cache-container.hibernate: org.jboss.msc.service.StartException in service org.wildfly.clustering.infinispan.cache-container.hibernate: org.infinispan.commons.CacheException: Unable to load component metadata!
at org.wildfly.clustering.service.FunctionalService.start(FunctionalService.java:70)
at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1739)
at org.jboss.msc.service.ServiceControllerImpl$StartTask.execute(ServiceControllerImpl.java:1701)
at org.jboss.msc.service.ServiceControllerImpl$ControllerTask.run(ServiceControllerImpl.java:1559)
at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:1982)
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1486)
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1377)
at java.lang.Thread.run(Thread.java:748)
Caused by: org.infinispan.commons.CacheException: Unable to load component metadata!
at org.infinispan.factories.components.ComponentMetadataRepo.initialize(ComponentMetadataRepo.java:175)
at org.infinispan.factories.GlobalComponentRegistry.<init>(GlobalComponentRegistry.java:107)
at org.infinispan.manager.DefaultCacheManager.<init>(DefaultCacheManager.java:257)
at org.jboss.as.clustering.infinispan.subsystem.CacheContainerServiceConfigurator.get(CacheContainerServiceConfigurator.java:100)
at org.jboss.as.clustering.infinispan.subsystem.CacheContainerServiceConfigurator.get(CacheContainerServiceConfigurator.java:73)
at org.wildfly.clustering.service.FunctionalService.start(FunctionalService.java:67)
... 8 more
Caused by: java.lang.NullPointerException
at org.infinispan.factories.components.ComponentMetadataRepo.readMetadata(ComponentMetadataRepo.java:44)
at org.infinispan.factories.components.ComponentMetadataRepo.initialize(ComponentMetadataRepo.java:173)
... 13 more

I am not sure about this exception, but it seems to indicates wrong configuration. I am using the default standalone.xml from WildFly:

    <subsystem xmlns="urn:jboss:domain:infinispan:9.0">
        <cache-container name="web" default-cache="passivation" module="org.wildfly.clustering.web.infinispan">
            <local-cache name="passivation">
                <locking isolation="REPEATABLE_READ" />
                <transaction mode="BATCH" />
                <file-store passivation="true" purge="false" />
            </local-cache>
            <local-cache name="sso">
                <locking isolation="REPEATABLE_READ" />
                <transaction mode="BATCH" />
            </local-cache>
            <local-cache name="routing" />
        </cache-container>
        <cache-container name="server" default-cache="default" module="org.wildfly.clustering.server">
            <local-cache name="default">
                <transaction mode="BATCH" />
            </local-cache>
        </cache-container>
        <cache-container name="ejb" aliases="sfsb" default-cache="passivation" module="org.wildfly.clustering.ejb.infinispan">
            <local-cache name="passivation">
                <locking isolation="REPEATABLE_READ" />
                <transaction mode="BATCH" />
                <file-store passivation="true" purge="false" />
            </local-cache>
        </cache-container>
        <cache-container name="hibernate" module="org.infinispan.hibernate-cache">
            <local-cache name="entity">
                <object-memory size="10000" />
                <expiration max-idle="100000" />
            </local-cache>
            <local-cache name="local-query">
                <object-memory size="10000" />
                <expiration max-idle="100000" />
            </local-cache>
            <local-cache name="timestamps" />
        </cache-container>
    </subsystem>

If there are changes in this configuration schema I was not able to figure out the correct schema to use here. To put everything in a nutshell I would like to know which Infinispan version is compatible with the current Hibernate version and what changes I have to do if I have to update Infinispan to 10.1.2.Final.

The End
  • 709
  • 3
  • 18

1 Answers1

1

Replacing Hibernate and Infinispan inside of WildFly is a non trivial endeavour, especially since there are server internals which depend on these components (the JPA susbsystem, the clustering subsystem, etc). If you want to use newer components you should either package them in your deployment or create a parallel module structure using a dedicated slot (instead of 'main') under the modules/system/add-ons hierarchy, and importing them via the deployment structure XML or the MANIFEST. Be aware, however, that in this case you will lose any "assistance" from the server (e.g. automatic detection of persistence units, caches defined outside of the application)

Tristan Tarrant
  • 1,299
  • 6
  • 6
  • When I use the server provisioning tool from WildFly the new versions are installed with different versions or under add-ons. And I also configured the correct version in the ```deployment-structure.xml```. But I still cannot figure out what problem is producing the exception meantioned above. – The End Feb 20 '20 at 09:30