Hi,
Version 26.2.4 was working without any issues in my test environment. I tried upgrading to the newly released version 26.2.5, but I started seeing error logs in the console.
Below is the content of my cache-ispn.xml file, which was working fine in version 26.2.4:
<infinispan
xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:infinispan:config:15.0
http://www.infinispan.org/schemas/infinispan-config-15.0.xsd"
xmlns="urn:infinispan:config:15.0">
<jgroups>
<stack name="mssql-jdbc-ping-tcp" extends="tcp">
<TCP external_addr="${env.JGROUPS_DISCOVERY_EXTERNAL_IP:127.0.0.1}" />
<JDBC_PING2 connection_driver="com.microsoft.sqlserver.jdbc.SQLServerDriver"
connection_username="${env.KC_DB_USERNAME}" connection_password="${env.KC_DB_PASSWORD}"
connection_url="jdbc:sqlserver://${env.KC_DB_URL_HOST}:${env.KC_DB_URL_PORT:1433};databaseName=${env.KC_DB_URL_DATABASE}${env.KC_DB_URL_PROPERTIES:}"
initialize_sql="IF NOT EXISTS (SELECT 1 FROM sys.schemas WHERE name = '${env.KC_DB_SCHEMA:dbo}') BEGIN EXEC ('CREATE SCHEMA [${env.KC_DB_SCHEMA:dbo}] AUTHORIZATION [dbo]') END; IF NOT EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE='BASE TABLE' AND TABLE_NAME='JGROUPS_PING' AND TABLE_SCHEMA='${env.KC_DB_SCHEMA:dbo}') CREATE TABLE ${env.KC_DB_SCHEMA:dbo}.JGROUPS_PING (address varchar(200) NOT NULL, name varchar(200) NULL, cluster_name varchar(200) NOT NULL, ip varchar(200) NOT NULL, coord bit NULL, constraint PK_JGROUPS_PING PRIMARY KEY (address));"
insert_single_sql="INSERT INTO ${env.KC_DB_SCHEMA:dbo}.JGROUPS_PING (address, name, cluster_name, ip, coord) values (?, ?, ?, '${env.JGROUPS_DISCOVERY_EXTERNAL_IP:127.0.0.1}', ?);"
delete_single_sql="DELETE FROM ${env.KC_DB_SCHEMA:dbo}.JGROUPS_PING WHERE address=?;"
select_all_pingdata_sql="SELECT address, name, ip, coord FROM ${env.KC_DB_SCHEMA:dbo}.JGROUPS_PING WHERE cluster_name=?;"
info_writer_sleep_time="500"
remove_all_data_on_view_change="true"
stack.combine="REPLACE"
stack.position="MPING" />
</stack>
</jgroups>
<cache-container name="keycloak"> ...
In my initial test, the cluster node information was not being inserted into the JGROUPS_PING table.
When I changed the following line:
"insert_single_sql="INSERT INTO ${env.KC_DB_SCHEMA:dbo}.JGROUPS_PING (address, name, cluster_name, ip, coord) values (?, ?, ?, '${env.JGROUPS_DISCOVERY_EXTERNAL_IP:127.0.0.1}', ?);"
to:
"insert_single_sql="INSERT INTO ${env.KC_DB_SCHEMA:dbo}.JGROUPS_PING (address, name, cluster_name, ip, coord) VALUES (?, ?, ?, ?, ?);"
the node information started to appear in the table correctly.
However, at this point, I am seeing the following error log in the console:
"2025-05-29 02:22:44,595 ERROR [org.jgroups.protocols.JDBC_PING2] (main) a0f8ca45903c-14147: failed clearing the table for cluster ISPN: com.microsoft.sqlserver.jdbc.SQLServerException: Invalid object name 'jgroups'.
keycloak-1 | at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:270)
keycloak-1 | at com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(SQLServerStatement.java:1735)
keycloak-1 | at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.doExecutePreparedStatement(SQLServerPreparedStatement.java:675)
keycloak-1 | at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement$PrepStmtExecCmd.doExecute(SQLServerPreparedStatement.java:594)
keycloak-1 | at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:7745)
keycloak-1 | at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:4391)
keycloak-1 | at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(SQLServerStatement.java:276)
keycloak-1 | at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(SQLServerStatement.java:246)
keycloak-1 | at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.execute(SQLServerPreparedStatement.java:571)
keycloak-1 | at org.jgroups.protocols.JDBC_PING2.clearTable(JDBC_PING2.java:389)
keycloak-1 | at org.jgroups.protocols.JDBC_PING2.removeAll(JDBC_PING2.java:200)
keycloak-1 | at org.jgroups.protocols.FILE_PING.handleView(FILE_PING.java:204)
keycloak-1 | at org.jgroups.protocols.FILE_PING.down(FILE_PING.java:138)
keycloak-1 | at org.jgroups.protocols.MERGE3.down(MERGE3.java:249)
keycloak-1 | at org.jgroups.protocols.FD_SOCK2.down(FD_SOCK2.java:228)
keycloak-1 | at org.jgroups.protocols.FailureDetection.down(FailureDetection.java:149)
keycloak-1 | at org.jgroups.protocols.VERIFY_SUSPECT2.down(VERIFY_SUSPECT2.java:84)
keycloak-1 | at org.jgroups.protocols.pbcast.NAKACK2.down(NAKACK2.java:632)
keycloak-1 | at org.jgroups.protocols.UNICAST3.down(UNICAST3.java:661)
keycloak-1 | at org.jgroups.protocols.pbcast.STABLE.down(STABLE.java:269)
keycloak-1 | at org.jgroups.protocols.pbcast.GMS.installView(GMS.java:694)
keycloak-1 | at org.jgroups.protocols.pbcast.ClientGmsImpl.becomeSingletonMember(ClientGmsImpl.java:251)
keycloak-1 | at org.jgroups.protocols.pbcast.ClientGmsImpl.joinInternal(ClientGmsImpl.java:86)
keycloak-1 | at org.jgroups.protocols.pbcast.ClientGmsImpl.join(ClientGmsImpl.java:37)
keycloak-1 | at org.jgroups.protocols.pbcast.GMS.down(GMS.java:902)
keycloak-1 | at org.jgroups.protocols.FlowControl.down(FlowControl.java:201)
keycloak-1 | at org.jgroups.protocols.FlowControl.down(FlowControl.java:201)
keycloak-1 | at org.jgroups.stack.Protocol.down(Protocol.java:308)
keycloak-1 | at org.jgroups.protocols.FRAG2.down(FRAG2.java:103)
keycloak-1 | at org.jgroups.stack.ProtocolStack.down(ProtocolStack.java:948)
keycloak-1 | at org.jgroups.JChannel.down(JChannel.java:612)
keycloak-1 | at org.jgroups.JChannel._connect(JChannel.java:825)
keycloak-1 | at org.jgroups.JChannel.connect(JChannel.java:331)
keycloak-1 | at org.jgroups.JChannel.connect(JChannel.java:321)
keycloak-1 | at org.infinispan.remoting.transport.jgroups.JGroupsTransport.startJGroupsChannelIfNeeded(JGroupsTransport.java:581)
keycloak-1 | at org.infinispan.remoting.transport.jgroups.JGroupsTransport.start(JGroupsTransport.java:456)
keycloak-1 | at org.infinispan.remoting.transport.jgroups.CorePackageImpl$2.start(CorePackageImpl.java:65)
keycloak-1 | at org.infinispan.remoting.transport.jgroups.CorePackageImpl$2.start(CorePackageImpl.java:50)
keycloak-1 | at org.infinispan.factories.impl.BasicComponentRegistryImpl.invokeStart(BasicComponentRegistryImpl.java:616)
keycloak-1 | at org.infinispan.factories.impl.BasicComponentRegistryImpl.doStartWrapper(BasicComponentRegistryImpl.java:607)
keycloak-1 | at org.infinispan.factories.impl.BasicComponentRegistryImpl.startWrapper(BasicComponentRegistryImpl.java:576)
keycloak-1 | at org.infinispan.factories.impl.BasicComponentRegistryImpl$ComponentWrapper.running(BasicComponentRegistryImpl.java:807)
keycloak-1 | at org.infinispan.factories.impl.BasicComponentRegistryImpl.startDependencies(BasicComponentRegistryImpl.java:634)
keycloak-1 | at org.infinispan.factories.impl.BasicComponentRegistryImpl.doStartWrapper(BasicComponentRegistryImpl.java:598)
keycloak-1 | at org.infinispan.factories.impl.BasicComponentRegistryImpl.startWrapper(BasicComponentRegistryImpl.java:576)
keycloak-1 | at org.infinispan.factories.impl.BasicComponentRegistryImpl$ComponentWrapper.running(BasicComponentRegistryImpl.java:807)
keycloak-1 | at org.infinispan.factories.GlobalComponentRegistry.preStart(GlobalComponentRegistry.java:307)
keycloak-1 | at org.infinispan.factories.AbstractComponentRegistry.start(AbstractComponentRegistry.java:241)
keycloak-1 | at org.infinispan.manager.DefaultCacheManager.internalStart(DefaultCacheManager.java:778)
keycloak-1 | at org.infinispan.manager.DefaultCacheManager.start(DefaultCacheManager.java:746)
keycloak-1 | at org.infinispan.manager.DefaultCacheManager.<init>(DefaultCacheManager.java:412)
keycloak-1 | at org.keycloak.quarkus.runtime.storage.infinispan.CacheManagerFactory.startEmbeddedCacheManager(CacheManagerFactory.java:339)
keycloak-1 | at org.keycloak.quarkus.runtime.storage.infinispan.CacheManagerFactory.getOrCreateEmbeddedCacheManager(CacheManagerFactory.java:134)
keycloak-1 | at org.keycloak.quarkus.runtime.storage.infinispan.CacheManagerFactory_Uq0wIYR2uOCznFEYZOJeeAi-Obg_Synthetic_ClientProxy.getOrCreateEmbeddedCacheManager(Unknown Source)
keycloak-1 | at org.keycloak.quarkus.runtime.storage.infinispan.QuarkusCacheManagerProvider.getEmbeddedCacheManager(QuarkusCacheManagerProvider.java:33)
keycloak-1 | at org.keycloak.connections.infinispan.DefaultInfinispanConnectionProviderFactory.lazyInit(DefaultInfinispanConnectionProviderFactory.java:211)
keycloak-1 | at org.keycloak.connections.infinispan.DefaultInfinispanConnectionProviderFactory.create(DefaultInfinispanConnectionProviderFactory.java:119)
keycloak-1 | at org.keycloak.connections.infinispan.DefaultInfinispanConnectionProviderFactory.create(DefaultInfinispanConnectionProviderFactory.java:100)
keycloak-1 | at org.keycloak.services.DefaultKeycloakSession.getOrCreateProvider(DefaultKeycloakSession.java:184)
keycloak-1 | at org.keycloak.services.DefaultKeycloakSession.getProvider(DefaultKeycloakSession.java:173)
keycloak-1 | at org.keycloak.models.sessions.infinispan.InfinispanSingleUseObjectProviderFactory.getSingleUseObjectCache(InfinispanSingleUseObjectProviderFactory.java:82)
keycloak-1 | at org.keycloak.models.sessions.infinispan.InfinispanSingleUseObjectProviderFactory.postInit(InfinispanSingleUseObjectProviderFactory.java:129)
keycloak-1 | at org.keycloak.services.DefaultKeycloakSessionFactory.initializeProviders(DefaultKeycloakSessionFactory.java:168)
keycloak-1 | at org.keycloak.services.DefaultKeycloakSessionFactory.initProviderFactories(DefaultKeycloakSessionFactory.java:145)
keycloak-1 | at org.keycloak.services.DefaultKeycloakSessionFactory.initProviderFactories(DefaultKeycloakSessionFactory.java:126)
keycloak-1 | at org.keycloak.quarkus.runtime.integration.QuarkusKeycloakSessionFactory.init(QuarkusKeycloakSessionFactory.java:87)
keycloak-1 | at org.keycloak.quarkus.runtime.integration.jaxrs.QuarkusKeycloakApplication.createSessionFactory(QuarkusKeycloakApplication.java:67)
keycloak-1 | at org.keycloak.services.resources.KeycloakApplication.startup(KeycloakApplication.java:90)
keycloak-1 | at org.keycloak.quarkus.runtime.integration.jaxrs.QuarkusKeycloakApplication.onStartupEvent(QuarkusKeycloakApplication.java:52)
keycloak-1 | at org.keycloak.quarkus.runtime.integration.jaxrs.QuarkusKeycloakApplication_Observer_onStartupEvent_GNZ8m5QenZ9h9VNelo7awjUZFDE.notify(Unknown Source)
keycloak-1 | at io.quarkus.arc.impl.EventImpl$Notifier.notifyObservers(EventImpl.java:365)
keycloak-1 | at io.quarkus.arc.impl.EventImpl$Notifier.notify(EventImpl.java:347)
keycloak-1 | at io.quarkus.arc.impl.EventImpl.fire(EventImpl.java:81)
keycloak-1 | at io.quarkus.arc.runtime.ArcRecorder.fireLifecycleEvent(ArcRecorder.java:163)
keycloak-1 | at io.quarkus.arc.runtime.ArcRecorder.handleLifecycleEvents(ArcRecorder.java:114)
keycloak-1 | at io.quarkus.runner.recorded.LifecycleEventsBuildStep$startupEvent1144526294.deploy_0(Unknown Source)
keycloak-1 | at io.quarkus.runner.recorded.LifecycleEventsBuildStep$startupEvent1144526294.deploy(Unknown Source)
keycloak-1 | at io.quarkus.runner.ApplicationImpl.doStart(Unknown Source)
keycloak-1 | at io.quarkus.runtime.Application.start(Application.java:101)
keycloak-1 | at io.quarkus.runtime.ApplicationLifecycleManager.run(ApplicationLifecycleManager.java:121)
keycloak-1 | at io.quarkus.runtime.Quarkus.run(Quarkus.java:77)
keycloak-1 | at org.keycloak.quarkus.runtime.KeycloakMain.start(KeycloakMain.java:145)
keycloak-1 | at org.keycloak.quarkus.runtime.cli.Picocli.start(Picocli.java:1002)
keycloak-1 | at org.keycloak.quarkus.runtime.cli.command.AbstractStartCommand.run(AbstractStartCommand.java:49)
keycloak-1 | at org.keycloak.quarkus.runtime.cli.command.Start.fastStart(Start.java:79)
keycloak-1 | at org.keycloak.quarkus.runtime.KeycloakMain.main(KeycloakMain.java:111)
keycloak-1 | at org.keycloak.quarkus.runtime.KeycloakMain.main(KeycloakMain.java:71)
keycloak-1 | at io.quarkus.bootstrap.runner.QuarkusEntryPoint.doRun(QuarkusEntryPoint.java:68)
keycloak-1 | at io.quarkus.bootstrap.runner.QuarkusEntryPoint.main(QuarkusEntryPoint.java:36)
keycloak-1 |
keycloak-1 | 2025-05-29 02:22:44,631 DEBUG [org.jgroups.protocols.JDBC_PING2] (main) a0f8ca45903c-14147: removed a0f8ca45903c-14147 for cluster ISPN from database
keycloak-1 | 2025-05-29 02:22:44,634 DEBUG [org.jgroups.protocols.JDBC_PING2] (main) a0f8ca45903c-14147: inserted a0f8ca45903c-14147 for cluster ISPN
keycloak-1 | 2025-05-29 02:22:44,646 INFO [org.infinispan.CLUSTER] (main) ISPN000094: Received new cluster view for channel ISPN: [a0f8ca45903c-14147|0] (1) [a0f8ca45903c-14147]
keycloak-1 | 2025-05-29 02:22:44,647 DEBUG [org.infinispan.remoting.transport.jgroups.JGroupsTransport] (main) Joined: [a0f8ca45903c-14147], Left: []
keycloak-1 | 2025-05-29 02:22:44,649 INFO [org.keycloak.infinispan.module.certificates.CertificateReloadManager] (main) Reloading JGroups Certificate
keycloak-1 | 2025-05-29 02:22:44,662 DEBUG [org.jgroups.protocols.pbcast.GMS] (main) a0f8ca45903c-14147: created cluster (first member). My view is [a0f8ca45903c-14147|0], impl is CoordGmsImpl
"
Just for your information.