diff --git a/adapters/saml/wildfly-elytron-jakarta/pom.xml b/adapters/saml/wildfly-elytron-jakarta/pom.xml
index f8dc3b5d5d8..b3a496978ee 100755
--- a/adapters/saml/wildfly-elytron-jakarta/pom.xml
+++ b/adapters/saml/wildfly-elytron-jakarta/pom.xml
@@ -92,16 +92,12 @@
org.infinispan
- infinispan-core-jakarta
+ infinispan-core
org.infinispan
infinispan-cachestore-remote
-
- org.infinispan
- infinispan-client-hotrod-jakarta
-
junit
junit
diff --git a/adapters/saml/wildfly-elytron/pom.xml b/adapters/saml/wildfly-elytron/pom.xml
index cc78c6e482b..5dfaf1bb6e3 100755
--- a/adapters/saml/wildfly-elytron/pom.xml
+++ b/adapters/saml/wildfly-elytron/pom.xml
@@ -88,11 +88,6 @@
org.infinispan
infinispan-cachestore-remote
-
-
- org.infinispan
- infinispan-client-hotrod
-
junit
junit
diff --git a/adapters/saml/wildfly-elytron/src/main/java/org/keycloak/adapters/saml/elytron/infinispan/InfinispanSessionCacheIdMapperUpdater.java b/adapters/saml/wildfly-elytron/src/main/java/org/keycloak/adapters/saml/elytron/infinispan/InfinispanSessionCacheIdMapperUpdater.java
index a6ac4fe6cd1..878b5f46bba 100644
--- a/adapters/saml/wildfly-elytron/src/main/java/org/keycloak/adapters/saml/elytron/infinispan/InfinispanSessionCacheIdMapperUpdater.java
+++ b/adapters/saml/wildfly-elytron/src/main/java/org/keycloak/adapters/saml/elytron/infinispan/InfinispanSessionCacheIdMapperUpdater.java
@@ -16,21 +16,21 @@
*/
package org.keycloak.adapters.saml.elytron.infinispan;
-import org.keycloak.adapters.saml.AdapterConstants;
-import org.keycloak.adapters.spi.SessionIdMapper;
-import org.keycloak.adapters.spi.SessionIdMapperUpdater;
-
-import javax.naming.InitialContext;
-import javax.naming.NamingException;
-import javax.servlet.ServletContext;
import org.infinispan.Cache;
import org.infinispan.configuration.cache.CacheMode;
import org.infinispan.configuration.cache.Configuration;
+import org.infinispan.factories.ComponentRegistry;
import org.infinispan.manager.EmbeddedCacheManager;
import org.infinispan.persistence.manager.PersistenceManager;
import org.infinispan.persistence.remote.RemoteStore;
import org.jboss.logging.Logger;
+import org.keycloak.adapters.saml.AdapterConstants;
+import org.keycloak.adapters.spi.SessionIdMapper;
+import org.keycloak.adapters.spi.SessionIdMapperUpdater;
+import javax.naming.InitialContext;
+import javax.naming.NamingException;
+import javax.servlet.ServletContext;
import java.util.Set;
/**
@@ -94,21 +94,19 @@ public static SessionIdMapperUpdater addTokenStoreUpdaters(ServletContext servle
}
Cache ssoCache = cacheManager.getCache(cacheName, true);
- final SsoSessionCacheListener listener = new SsoSessionCacheListener(ssoCache, mapper);
+ SsoSessionCacheListener listener = new SsoSessionCacheListener(ssoCache, mapper);
ssoCache.addListener(listener);
addSsoCacheCrossDcListener(ssoCache, listener);
LOG.debugv("Added distributed SSO session cache, lookup={0}, cache name={1}", cacheContainerLookup, cacheName);
- SsoCacheSessionIdMapperUpdater updater = new SsoCacheSessionIdMapperUpdater(ssoCache, previousIdMapperUpdater) {
+ return new SsoCacheSessionIdMapperUpdater(ssoCache, previousIdMapperUpdater) {
@Override
- public void close() throws Exception {
+ public void close() {
ssoCache.stop();
}
};
-
- return updater;
} catch (NamingException ex) {
LOG.warnv("Failed to obtain distributed session cache container, lookup={0}", cacheContainerLookup);
return previousIdMapperUpdater;
@@ -137,7 +135,7 @@ private static void addSsoCacheCrossDcListener(Cache ssoCache,
return;
}
- final Set stores = getRemoteStores(ssoCache);
+ Set stores = getRemoteStores(ssoCache);
if (stores == null || stores.isEmpty()) {
return;
}
@@ -149,7 +147,7 @@ private static void addSsoCacheCrossDcListener(Cache ssoCache,
}
}
- public static Set getRemoteStores(Cache ispnCache) {
- return ispnCache.getAdvancedCache().getComponentRegistry().getComponent(PersistenceManager.class).getStores(RemoteStore.class);
+ public static Set getRemoteStores(Cache, ?> ispnCache) {
+ return ComponentRegistry.componentOf(ispnCache, PersistenceManager.class).getStores(RemoteStore.class);
}
}
diff --git a/docs/guides/high-availability/examples/generated/ispn-single.yaml b/docs/guides/high-availability/examples/generated/ispn-single.yaml
index a87e79f8f76..a8efeecdafd 100644
--- a/docs/guides/high-availability/examples/generated/ispn-single.yaml
+++ b/docs/guides/high-availability/examples/generated/ispn-single.yaml
@@ -224,7 +224,7 @@ spec:
expose:
type: Route
configMapName: "cluster-config"
- image: quay.io/infinispan/server:14.0.27.Final
+ image: quay.io/infinispan/server:15.0.3.Final
configListener:
enabled: false
container:
diff --git a/docs/guides/high-availability/examples/generated/ispn-site-a.yaml b/docs/guides/high-availability/examples/generated/ispn-site-a.yaml
index b8c66d22635..49025f32ba5 100644
--- a/docs/guides/high-availability/examples/generated/ispn-site-a.yaml
+++ b/docs/guides/high-availability/examples/generated/ispn-site-a.yaml
@@ -363,7 +363,7 @@ spec:
expose:
type: Route
configMapName: "cluster-config"
- image: quay.io/infinispan/server:14.0.27.Final
+ image: quay.io/infinispan/server:15.0.3.Final
configListener:
enabled: false
container:
diff --git a/docs/guides/high-availability/examples/generated/ispn-site-b.yaml b/docs/guides/high-availability/examples/generated/ispn-site-b.yaml
index 7320a6ed821..40913fb54be 100644
--- a/docs/guides/high-availability/examples/generated/ispn-site-b.yaml
+++ b/docs/guides/high-availability/examples/generated/ispn-site-b.yaml
@@ -363,7 +363,7 @@ spec:
expose:
type: Route
configMapName: "cluster-config"
- image: quay.io/infinispan/server:14.0.27.Final
+ image: quay.io/infinispan/server:15.0.3.Final
configListener:
enabled: false
container:
diff --git a/model/infinispan/pom.xml b/model/infinispan/pom.xml
index 490fbc19dca..1deb2ac0e5b 100755
--- a/model/infinispan/pom.xml
+++ b/model/infinispan/pom.xml
@@ -59,11 +59,7 @@
org.infinispan
- infinispan-core-jakarta
-
-
- org.infinispan
- infinispan-client-hotrod-jakarta
+ infinispan-core
org.infinispan
diff --git a/model/infinispan/src/main/java/org/keycloak/cluster/infinispan/InfinispanClusterProviderFactory.java b/model/infinispan/src/main/java/org/keycloak/cluster/infinispan/InfinispanClusterProviderFactory.java
index b7b2846734a..39433acc5ba 100644
--- a/model/infinispan/src/main/java/org/keycloak/cluster/infinispan/InfinispanClusterProviderFactory.java
+++ b/model/infinispan/src/main/java/org/keycloak/cluster/infinispan/InfinispanClusterProviderFactory.java
@@ -20,13 +20,11 @@
import org.infinispan.Cache;
import org.infinispan.client.hotrod.exceptions.HotRodClientException;
import org.infinispan.lifecycle.ComponentStatus;
-import org.infinispan.manager.EmbeddedCacheManager;
import org.infinispan.notifications.Listener;
import org.infinispan.notifications.cachemanagerlistener.annotation.ViewChanged;
import org.infinispan.notifications.cachemanagerlistener.event.ViewChangedEvent;
import org.infinispan.persistence.remote.RemoteStore;
import org.infinispan.remoting.transport.Address;
-import org.infinispan.remoting.transport.Transport;
import org.jboss.logging.Logger;
import org.keycloak.Config;
import org.keycloak.cluster.ClusterProvider;
@@ -35,10 +33,10 @@
import org.keycloak.common.util.Time;
import org.keycloak.connections.infinispan.DefaultInfinispanConnectionProviderFactory;
import org.keycloak.connections.infinispan.InfinispanConnectionProvider;
+import org.keycloak.connections.infinispan.InfinispanUtil;
import org.keycloak.connections.infinispan.TopologyInfo;
import org.keycloak.models.KeycloakSession;
import org.keycloak.models.KeycloakSessionFactory;
-import org.keycloak.connections.infinispan.InfinispanUtil;
import java.io.Serializable;
import java.util.Collection;
@@ -47,7 +45,6 @@
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicReference;
-import java.util.function.Function;
import java.util.stream.Collectors;
/**
@@ -72,7 +69,7 @@ public class InfinispanClusterProviderFactory implements ClusterProviderFactory
// Just to extract notifications related stuff to separate class
private InfinispanNotificationsManager notificationsManager;
- private ExecutorService localExecutor = Executors.newCachedThreadPool(r -> {
+ private final ExecutorService localExecutor = Executors.newCachedThreadPool(r -> {
Thread thread = Executors.defaultThreadFactory().newThread(r);
thread.setName(this.getClass().getName() + "-" + thread.getName());
return thread;
@@ -140,7 +137,7 @@ protected int initClusterStartupTime(KeycloakSession session) {
static V putIfAbsentWithRetries(CrossDCAwareCacheFactory crossDCAwareCacheFactory, String key, V value, int taskTimeoutInSeconds) {
AtomicReference resultRef = new AtomicReference<>();
- Retry.executeWithBackoff((int iteration) -> {
+ Retry.executeWithBackoff(iteration -> {
try {
V result;
@@ -196,17 +193,14 @@ public class ViewChangeListener {
@ViewChanged
public void viewChanged(ViewChangedEvent event) {
- final Set removedNodesAddresses = convertAddresses(event.getOldMembers());
- final Set newAddresses = convertAddresses(event.getNewMembers());
+ Set removedNodesAddresses = convertAddresses(event.getOldMembers());
+ Set newAddresses = convertAddresses(event.getNewMembers());
// Use separate thread to avoid potential deadlock
localExecutor.execute(() -> {
try {
- EmbeddedCacheManager cacheManager = workCache.getCacheManager();
- Transport transport = cacheManager.getTransport();
-
// Coordinator makes sure that entries for outdated nodes are cleaned up
- if (transport != null && transport.isCoordinator()) {
+ if (workCache.getCacheManager().isCoordinator()) {
removedNodesAddresses.removeAll(newAddresses);
@@ -230,14 +224,7 @@ public void viewChanged(ViewChangedEvent event) {
}
private Set convertAddresses(Collection addresses) {
- return addresses.stream().map(new Function() {
-
- @Override
- public String apply(Address address) {
- return address.toString();
- }
-
- }).collect(Collectors.toSet());
+ return addresses.stream().map(Object::toString).collect(Collectors.toSet());
}
}
diff --git a/model/infinispan/src/main/java/org/keycloak/connections/infinispan/InfinispanMultiSiteLoadBalancerCheckProvider.java b/model/infinispan/src/main/java/org/keycloak/connections/infinispan/InfinispanMultiSiteLoadBalancerCheckProvider.java
index 640db84f099..704cefde06d 100644
--- a/model/infinispan/src/main/java/org/keycloak/connections/infinispan/InfinispanMultiSiteLoadBalancerCheckProvider.java
+++ b/model/infinispan/src/main/java/org/keycloak/connections/infinispan/InfinispanMultiSiteLoadBalancerCheckProvider.java
@@ -18,6 +18,7 @@
package org.keycloak.connections.infinispan;
import org.infinispan.Cache;
+import org.infinispan.factories.ComponentRegistry;
import org.infinispan.persistence.manager.PersistenceManager;
import org.jboss.logging.Logger;
import org.keycloak.health.LoadBalancerCheckProvider;
@@ -60,9 +61,7 @@ public boolean isDown() {
return true; // no need to check other caches
}
- PersistenceManager persistenceManager = cache.getAdvancedCache()
- .getComponentRegistry()
- .getComponent(PersistenceManager.class);
+ var persistenceManager = ComponentRegistry.componentOf(cache, PersistenceManager.class);
if (persistenceManager != null && !persistenceManager.isAvailable()) {
LOG.debugf("PersistenceManager for cache '%s' is down.", cacheName);
diff --git a/model/infinispan/src/main/java/org/keycloak/connections/infinispan/InfinispanUtil.java b/model/infinispan/src/main/java/org/keycloak/connections/infinispan/InfinispanUtil.java
index 5d3c9ec7da7..95e901a330f 100644
--- a/model/infinispan/src/main/java/org/keycloak/connections/infinispan/InfinispanUtil.java
+++ b/model/infinispan/src/main/java/org/keycloak/connections/infinispan/InfinispanUtil.java
@@ -17,11 +17,6 @@
package org.keycloak.connections.infinispan;
-import java.time.Instant;
-import java.util.Set;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.atomic.AtomicReference;
-
import org.infinispan.Cache;
import org.infinispan.client.hotrod.ProtocolVersion;
import org.infinispan.client.hotrod.RemoteCache;
@@ -34,7 +29,7 @@
import org.infinispan.configuration.global.GlobalConfigurationBuilder;
import org.infinispan.configuration.global.TransportConfigurationBuilder;
import org.infinispan.eviction.EvictionStrategy;
-import org.infinispan.eviction.EvictionType;
+import org.infinispan.factories.ComponentRegistry;
import org.infinispan.factories.GlobalComponentRegistry;
import org.infinispan.factories.impl.BasicComponentRegistry;
import org.infinispan.factories.impl.ComponentRef;
@@ -48,6 +43,11 @@
import org.keycloak.common.util.Time;
import org.keycloak.models.KeycloakSession;
+import java.time.Instant;
+import java.util.Set;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicReference;
+
/**
* @author Marek Posolda
*/
@@ -58,12 +58,12 @@ public class InfinispanUtil {
public static final int MAXIMUM_REPLACE_RETRIES = 25;
// See if we have RemoteStore (external JDG) configured for cross-Data-Center scenario
- public static Set getRemoteStores(Cache ispnCache) {
- return ispnCache.getAdvancedCache().getComponentRegistry().getComponent(PersistenceManager.class).getStores(RemoteStore.class);
+ public static Set getRemoteStores(Cache, ?> ispnCache) {
+ return ComponentRegistry.componentOf(ispnCache, PersistenceManager.class).getStores(RemoteStore.class);
}
- public static RemoteCache getRemoteCache(Cache ispnCache) {
+ public static RemoteCache getRemoteCache(Cache, ?> ispnCache) {
Set remoteStores = getRemoteStores(ispnCache);
if (remoteStores.isEmpty()) {
return null;
@@ -88,10 +88,9 @@ public static TopologyInfo getTopologyInfo(KeycloakSession session) {
* @param lifespanOrigMs
* @return
*/
- public static long toHotrodTimeMs(BasicCache ispnCache, long lifespanOrigMs) {
- if (ispnCache instanceof RemoteCache && lifespanOrigMs > 2592000000L) {
- RemoteCache remoteCache = (RemoteCache) ispnCache;
- ProtocolVersion protocolVersion = remoteCache.getRemoteCacheManager().getConfiguration().version();
+ public static long toHotrodTimeMs(BasicCache, ?> ispnCache, long lifespanOrigMs) {
+ if (ispnCache instanceof RemoteCache, ?> remoteCache && lifespanOrigMs > 2592000000L) {
+ ProtocolVersion protocolVersion = remoteCache.getRemoteCacheContainer().getConfiguration().version();
if (ProtocolVersion.PROTOCOL_VERSION_30.compareTo(protocolVersion) > 0) {
return Time.currentTimeMillis() + lifespanOrigMs;
}
@@ -103,7 +102,7 @@ public static long toHotrodTimeMs(BasicCache ispnCache, long lifespanOrigMs) {
private static final Object CHANNEL_INIT_SYNCHRONIZER = new Object();
public static void configureTransport(GlobalConfigurationBuilder gcb, String nodeName, String siteName, String jgroupsUdpMcastAddr,
- String jgroupsConfigPath) {
+ String jgroupsConfigPath) {
if (nodeName == null) {
gcb.transport().defaultTransport();
} else {
@@ -166,9 +165,8 @@ public static ConfigurationBuilder getActionTokenCacheConfig() {
ConfigurationBuilder cb = createCacheConfigurationBuilder();
cb.memory()
- .evictionStrategy(EvictionStrategy.NONE)
- .evictionType(EvictionType.COUNT)
- .size(InfinispanConnectionProvider.ACTION_TOKEN_CACHE_DEFAULT_MAX);
+ .whenFull(EvictionStrategy.MANUAL)
+ .maxCount(InfinispanConnectionProvider.ACTION_TOKEN_CACHE_DEFAULT_MAX);
cb.expiration()
.maxIdle(InfinispanConnectionProvider.ACTION_TOKEN_MAX_IDLE_SECONDS, TimeUnit.SECONDS)
.wakeUpInterval(InfinispanConnectionProvider.ACTION_TOKEN_WAKE_UP_INTERVAL_SECONDS, TimeUnit.SECONDS);
@@ -209,7 +207,7 @@ public static Runnable setTimeServiceToKeycloakTime(EmbeddedCacheManager cacheMa
* @return the original component that was replaced
*/
private static T replaceComponent(EmbeddedCacheManager cacheMgr, Class componentType, T replacementComponent, boolean rewire) {
- GlobalComponentRegistry cr = cacheMgr.getGlobalComponentRegistry();
+ GlobalComponentRegistry cr = GlobalComponentRegistry.of(cacheMgr);
BasicComponentRegistry bcr = cr.getComponent(BasicComponentRegistry.class);
ComponentRef old = bcr.getComponent(componentType);
bcr.replaceComponent(componentType.getName(), replacementComponent, true);
diff --git a/model/infinispan/src/main/java/org/keycloak/connections/infinispan/TopologyInfo.java b/model/infinispan/src/main/java/org/keycloak/connections/infinispan/TopologyInfo.java
index cefe17d3675..7ac528f09ec 100644
--- a/model/infinispan/src/main/java/org/keycloak/connections/infinispan/TopologyInfo.java
+++ b/model/infinispan/src/main/java/org/keycloak/connections/infinispan/TopologyInfo.java
@@ -17,12 +17,9 @@
package org.keycloak.connections.infinispan;
-import java.net.InetSocketAddress;
-import java.security.SecureRandom;
-import java.util.Objects;
-
import org.infinispan.Cache;
import org.infinispan.distribution.DistributionManager;
+import org.infinispan.factories.GlobalComponentRegistry;
import org.infinispan.manager.EmbeddedCacheManager;
import org.infinispan.remoting.transport.Address;
import org.infinispan.remoting.transport.LocalModeAddress;
@@ -30,12 +27,14 @@
import org.infinispan.remoting.transport.jgroups.JGroupsAddress;
import org.infinispan.remoting.transport.jgroups.JGroupsTransport;
import org.jboss.logging.Logger;
-import org.jgroups.Event;
-import org.jgroups.JChannel;
import org.jgroups.stack.IpAddress;
import org.jgroups.util.NameCache;
import org.keycloak.Config;
+import java.net.InetSocketAddress;
+import java.security.SecureRandom;
+import java.util.Objects;
+
/**
* @author Marek Posolda
*/
@@ -66,9 +65,9 @@ public TopologyInfo(EmbeddedCacheManager cacheManager, Config.Scope config, bool
}
if (!embedded) {
- Transport transport = cacheManager.getTransport();
- if (transport != null) {
- nodeName = transport.getAddress().toString();
+ var addr = cacheManager.getAddress();
+ if (addr != null) {
+ nodeName = addr.toString();
siteName = cacheManager.getCacheManagerConfiguration().transport().siteId();
if (siteName == null) {
siteName = config.get("siteName");
@@ -133,7 +132,7 @@ public String toString() {
/**
* True if I am primary owner of the key in case of distributed caches. In case of local caches, always return true
*/
- public boolean amIOwner(Cache cache, Object key) {
+ public boolean amIOwner(Cache, ?> cache, Object key) {
Address myAddress = cache.getCacheManager().getAddress();
Address objectOwnerAddress = getOwnerAddress(cache, key);
@@ -145,7 +144,7 @@ public boolean amIOwner(Cache cache, Object key) {
/**
* Get route to be used as the identifier for sticky session. Return null if I am not able to find the appropriate route (or in case of local mode)
*/
- public String getRouteName(Cache cache, Object key) {
+ public String getRouteName(Cache, ?> cache, Object key) {
if (cache.getCacheConfiguration().clustering().cacheMode().isClustered() && isGeneratedNodeName) {
logger.warn("Clustered configuration used, but node name is not properly set. Make sure to start server with jboss.node.name property identifying cluster node");
}
@@ -168,11 +167,11 @@ public String getRouteName(Cache cache, Object key) {
// If no logical name exists, create one using physical address
if (name == null) {
- Transport transport = cache.getCacheManager().getTransport();
- JChannel jgroupsChannel = ((JGroupsTransport) transport).getChannel();
-
- IpAddress ipAddress = (IpAddress) jgroupsChannel.down(new Event(Event.GET_PHYSICAL_ADDRESS, jgroupsAddress));
- // Physical address might be null if node is no longer a member of the cluster
+ var transport = GlobalComponentRegistry.componentOf(cache.getCacheManager(), Transport.class);
+ var channel = ((JGroupsTransport) transport).getChannel();
+ var ipAddress = (IpAddress) channel.getProtocolStack().getTransport().localPhysicalAddress();
+ // Physical address might be null if node is no longer a member of the cluster.
+ // This seems broken, it is returning the IP/PORT for JGroups!?
InetSocketAddress socketAddress = (ipAddress != null) ? new InetSocketAddress(ipAddress.getIpAddress(), ipAddress.getPort()) : new InetSocketAddress(0);
name = String.format("%s:%s", socketAddress.getHostString(), socketAddress.getPort());
@@ -183,21 +182,16 @@ public String getRouteName(Cache cache, Object key) {
}
- private Address getOwnerAddress(Cache cache, Object key) {
+ private Address getOwnerAddress(Cache, ?> cache, Object key) {
DistributionManager dist = cache.getAdvancedCache().getDistributionManager();
- Address address = (dist != null) && !cache.getCacheConfiguration().clustering().cacheMode().isScattered() ?
- dist.getCacheTopology().getDistribution(key).primary() :
- cache.getCacheManager().getAddress();
-
- return address;
+ return dist == null ? cache.getCacheManager().getAddress() : dist.getCacheTopology().getDistribution(key).primary();
}
// See org.wildfly.clustering.server.group.CacheGroup
private static org.jgroups.Address toJGroupsAddress(Address address) {
if ((address == null) || (address == LocalModeAddress.INSTANCE)) return null;
- if (address instanceof JGroupsAddress) {
- JGroupsAddress jgroupsAddress = (JGroupsAddress) address;
+ if (address instanceof JGroupsAddress jgroupsAddress) {
return jgroupsAddress.getJGroupsAddress();
}
throw new IllegalArgumentException(address.toString());
diff --git a/model/infinispan/src/main/java/org/keycloak/models/sessions/infinispan/InfinispanUserLoginFailureProviderFactory.java b/model/infinispan/src/main/java/org/keycloak/models/sessions/infinispan/InfinispanUserLoginFailureProviderFactory.java
index 467fc4f9e7f..79b16bb9d02 100644
--- a/model/infinispan/src/main/java/org/keycloak/models/sessions/infinispan/InfinispanUserLoginFailureProviderFactory.java
+++ b/model/infinispan/src/main/java/org/keycloak/models/sessions/infinispan/InfinispanUserLoginFailureProviderFactory.java
@@ -202,11 +202,8 @@ public void run(KeycloakSession session) {
InfinispanCacheInitializer initializer = new InfinispanCacheInitializer(sessionFactory, workCache,
new RemoteCacheSessionsLoader(cacheName, sessionsPerSegment), "remoteCacheLoad::" + cacheName, maxErrors,
getStalledTimeoutInSeconds(defaultStateTransferTimeout));
-
- initializer.initCache();
initializer.loadSessions();
}
-
});
log.debugf("Pre-loading login failures from remote cache '%s' finished", cacheName);
diff --git a/model/infinispan/src/main/java/org/keycloak/models/sessions/infinispan/InfinispanUserSessionProviderFactory.java b/model/infinispan/src/main/java/org/keycloak/models/sessions/infinispan/InfinispanUserSessionProviderFactory.java
index 745b4ba487d..84fc24256c7 100755
--- a/model/infinispan/src/main/java/org/keycloak/models/sessions/infinispan/InfinispanUserSessionProviderFactory.java
+++ b/model/infinispan/src/main/java/org/keycloak/models/sessions/infinispan/InfinispanUserSessionProviderFactory.java
@@ -399,11 +399,8 @@ public void run(KeycloakSession session) {
InfinispanCacheInitializer initializer = new InfinispanCacheInitializer(sessionFactory, workCache,
new RemoteCacheSessionsLoader(cacheName, sessionsPerSegment), "remoteCacheLoad::" + cacheName, maxErrors,
getStalledTimeoutInSeconds(defaultStateTransferTimeout));
-
- initializer.initCache();
initializer.loadSessions();
}
-
});
log.debugf("Pre-loading sessions from remote cache '%s' finished", cacheName);
diff --git a/model/infinispan/src/main/java/org/keycloak/models/sessions/infinispan/initializer/BaseCacheInitializer.java b/model/infinispan/src/main/java/org/keycloak/models/sessions/infinispan/initializer/BaseCacheInitializer.java
index f128da6694d..d18c7d19aaf 100644
--- a/model/infinispan/src/main/java/org/keycloak/models/sessions/infinispan/initializer/BaseCacheInitializer.java
+++ b/model/infinispan/src/main/java/org/keycloak/models/sessions/infinispan/initializer/BaseCacheInitializer.java
@@ -17,15 +17,14 @@
package org.keycloak.models.sessions.infinispan.initializer;
-import java.io.Serializable;
-
import org.infinispan.Cache;
import org.infinispan.context.Flag;
import org.infinispan.lifecycle.ComponentStatus;
-import org.infinispan.remoting.transport.Transport;
import org.jboss.logging.Logger;
import org.keycloak.models.KeycloakSessionFactory;
+import java.io.Serializable;
+
/**
* @author Marek Posolda
*/
@@ -74,21 +73,15 @@ protected InitializerState getStateFromCache() {
}
- protected void saveStateToCache(final InitializerState state) {
+ protected void saveStateToCache(InitializerState state) {
// 3 attempts to send the message (it may fail if some node fails in the meantime)
- retry(3, new Runnable() {
-
- @Override
- public void run() {
-
- // Save this synchronously to ensure all nodes read correct state
- // We ignore cacheStore for now, so that in Cross-DC scenario (with RemoteStore enabled) is the remoteStore ignored.
- BaseCacheInitializer.this.workCache.getAdvancedCache().
- withFlags(Flag.IGNORE_RETURN_VALUES, Flag.FORCE_SYNCHRONOUS, Flag.SKIP_CACHE_STORE, Flag.SKIP_CACHE_LOAD)
- .put(stateKey, state);
- }
-
+ retry(3, () -> {
+ // Save this synchronously to ensure all nodes read correct state
+ // We ignore cacheStore for now, so that in Cross-DC scenario (with RemoteStore enabled) is the remoteStore ignored.
+ BaseCacheInitializer.this.workCache.getAdvancedCache().
+ withFlags(Flag.IGNORE_RETURN_VALUES, Flag.FORCE_SYNCHRONOUS, Flag.SKIP_CACHE_STORE, Flag.SKIP_CACHE_LOAD)
+ .put(stateKey, state);
});
}
diff --git a/model/infinispan/src/main/java/org/keycloak/models/sessions/infinispan/initializer/InfinispanCacheInitializer.java b/model/infinispan/src/main/java/org/keycloak/models/sessions/infinispan/initializer/InfinispanCacheInitializer.java
index 49bf009c85e..70ba4c2b784 100755
--- a/model/infinispan/src/main/java/org/keycloak/models/sessions/infinispan/initializer/InfinispanCacheInitializer.java
+++ b/model/infinispan/src/main/java/org/keycloak/models/sessions/infinispan/initializer/InfinispanCacheInitializer.java
@@ -18,7 +18,6 @@
package org.keycloak.models.sessions.infinispan.initializer;
import org.infinispan.Cache;
-import org.infinispan.factories.ComponentRegistry;
import org.jboss.logging.Logger;
import org.keycloak.models.KeycloakSession;
import org.keycloak.models.KeycloakSessionFactory;
@@ -26,9 +25,9 @@
import org.keycloak.models.utils.KeycloakModelUtils;
import java.io.Serializable;
-import java.util.concurrent.ConcurrentLinkedQueue;
import java.util.List;
import java.util.Queue;
+import java.util.concurrent.ConcurrentLinkedQueue;
/**
* Startup initialization for reading persistent userSessions to be filled into infinispan/memory.
@@ -53,18 +52,6 @@ public InfinispanCacheInitializer(KeycloakSessionFactory sessionFactory, Cache results = new ConcurrentLinkedQueue<>();
+ Queue results = new ConcurrentLinkedQueue<>();
for (Integer segment : segments) {
SessionLoader.WorkerContext workerCtx = sessionLoader.computeWorkerContext(segment);
diff --git a/model/infinispan/src/test/java/org/keycloak/cluster/infinispan/ConcurrencyJDGCachePutTest.java b/model/infinispan/src/test/java/org/keycloak/cluster/infinispan/ConcurrencyJDGCachePutTest.java
index 6e537e526c2..eabfdb8ebce 100644
--- a/model/infinispan/src/test/java/org/keycloak/cluster/infinispan/ConcurrencyJDGCachePutTest.java
+++ b/model/infinispan/src/test/java/org/keycloak/cluster/infinispan/ConcurrencyJDGCachePutTest.java
@@ -17,11 +17,6 @@
package org.keycloak.cluster.infinispan;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Random;
-import java.util.concurrent.atomic.AtomicInteger;
-
import org.infinispan.Cache;
import org.infinispan.client.hotrod.Flag;
import org.infinispan.client.hotrod.RemoteCache;
@@ -31,12 +26,17 @@
import org.infinispan.client.hotrod.event.ClientCacheEntryCreatedEvent;
import org.infinispan.client.hotrod.event.ClientCacheEntryModifiedEvent;
import org.infinispan.client.hotrod.exceptions.HotRodClientException;
+import org.infinispan.factories.ComponentRegistry;
import org.infinispan.manager.EmbeddedCacheManager;
import org.infinispan.persistence.manager.PersistenceManager;
import org.infinispan.persistence.remote.RemoteStore;
import org.infinispan.persistence.remote.configuration.RemoteStoreConfigurationBuilder;
import org.keycloak.connections.infinispan.InfinispanConnectionProvider;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.concurrent.atomic.AtomicInteger;
+
/**
* Test concurrency for remoteStore (backed by HotRod RemoteCaches) against external JDG. Especially tests "putIfAbsent" contract.
*
@@ -46,11 +46,7 @@
*/
public class ConcurrencyJDGCachePutTest {
- private static Map state = new HashMap<>();
-
- private RemoteCache remoteCache1;
- private RemoteCache remoteCache2;
-
+ private static final Map state = new HashMap<>();
public static void main(String[] args) throws Exception {
// Init map somehow
@@ -105,7 +101,8 @@ private static Worker createWorker(int threadId) {
System.out.println("Retrieved cache: " + threadId);
- RemoteStore remoteStore = cache.getAdvancedCache().getComponentRegistry().getComponent(PersistenceManager.class).getStores(RemoteStore.class).iterator().next();
+ RemoteStore, ?> remoteStore = ComponentRegistry.componentOf(cache, PersistenceManager.class)
+ .getStores(RemoteStore.class).iterator().next();
HotRodListener listener = new HotRodListener();
remoteStore.getRemoteCache().addClientListener(listener);
@@ -119,14 +116,14 @@ public static class HotRodListener {
//private AtomicInteger listenerCount = new AtomicInteger(0);
@ClientCacheEntryCreated
- public void created(ClientCacheEntryCreatedEvent event) {
- String cacheKey = (String) event.getKey();
+ public void created(ClientCacheEntryCreatedEvent event) {
+ String cacheKey = event.getKey();
state.get(cacheKey).successfulListenerWrites.incrementAndGet();
}
@ClientCacheEntryModified
- public void updated(ClientCacheEntryModifiedEvent event) {
- String cacheKey = (String) event.getKey();
+ public void updated(ClientCacheEntryModifiedEvent event) {
+ String cacheKey = event.getKey();
state.get(cacheKey).successfulListenerWrites.incrementAndGet();
}
@@ -171,7 +168,10 @@ public static int getClusterStartupTime(Cache cache, String cac
//Integer existingClusterStartTime = (Integer) cache.putIfAbsent(cacheKey, startupTime);
// Concurrency works fine with this
- RemoteCache remoteCache = cache.getAdvancedCache().getComponentRegistry().getComponent(PersistenceManager.class).getStores(RemoteStore.class).iterator().next().getRemoteCache();
+ RemoteCache remoteCache = ComponentRegistry.componentOf(cache, PersistenceManager.class)
+ .getStores(RemoteStore.class)
+ .iterator().next()
+ .getRemoteCache();
Integer existingClusterStartTime = null;
for (int i=0 ; i<10 ; i++) {
diff --git a/model/infinispan/src/test/java/org/keycloak/cluster/infinispan/ConcurrencyJDGRemoteCacheClientListenersTest.java b/model/infinispan/src/test/java/org/keycloak/cluster/infinispan/ConcurrencyJDGRemoteCacheClientListenersTest.java
index 26b14435f25..99c7e8312f6 100644
--- a/model/infinispan/src/test/java/org/keycloak/cluster/infinispan/ConcurrencyJDGRemoteCacheClientListenersTest.java
+++ b/model/infinispan/src/test/java/org/keycloak/cluster/infinispan/ConcurrencyJDGRemoteCacheClientListenersTest.java
@@ -17,12 +17,6 @@
package org.keycloak.cluster.infinispan;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.concurrent.Executor;
-import java.util.concurrent.Executors;
-import java.util.concurrent.atomic.AtomicInteger;
-
import org.infinispan.Cache;
import org.infinispan.client.hotrod.RemoteCache;
import org.infinispan.client.hotrod.VersionedValue;
@@ -31,6 +25,7 @@
import org.infinispan.client.hotrod.annotation.ClientListener;
import org.infinispan.client.hotrod.event.ClientCacheEntryCreatedEvent;
import org.infinispan.client.hotrod.event.ClientCacheEntryModifiedEvent;
+import org.infinispan.factories.ComponentRegistry;
import org.infinispan.manager.EmbeddedCacheManager;
import org.infinispan.persistence.manager.PersistenceManager;
import org.infinispan.persistence.remote.RemoteStore;
@@ -39,6 +34,12 @@
import org.keycloak.connections.infinispan.InfinispanConnectionProvider;
import org.keycloak.connections.infinispan.InfinispanUtil;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.concurrent.Executor;
+import java.util.concurrent.Executors;
+import java.util.concurrent.atomic.AtomicInteger;
+
/**
* Test that hotrod ClientListeners are correctly executed as expected
*
@@ -68,11 +69,11 @@
public class ConcurrencyJDGRemoteCacheClientListenersTest {
// Helper map to track if listeners were executed
- private static Map state = new HashMap<>();
+ private static final Map state = new HashMap<>();
- private static AtomicInteger totalListenerCalls = new AtomicInteger(0);
+ private static final AtomicInteger totalListenerCalls = new AtomicInteger(0);
- private static AtomicInteger totalErrors = new AtomicInteger(0);
+ private static final AtomicInteger totalErrors = new AtomicInteger(0);
public static void main(String[] args) throws Exception {
@@ -134,7 +135,8 @@ private static Worker createWorker(int threadId) {
System.out.println("Retrieved cache: " + threadId);
- RemoteStore remoteStore = cache.getAdvancedCache().getComponentRegistry().getComponent(PersistenceManager.class).getStores(RemoteStore.class).iterator().next();
+ RemoteStore, ?> remoteStore = ComponentRegistry.componentOf(cache, PersistenceManager.class)
+ .getStores(RemoteStore.class).iterator().next();
HotRodListener listener = new HotRodListener(cache, threadId);
remoteStore.getRemoteCache().addClientListener(listener);
@@ -147,7 +149,7 @@ public static class HotRodListener {
private final RemoteCache remoteCache;
private final int threadId;
- private Executor executor;
+ private final Executor executor;
public HotRodListener(Cache cache, int threadId) {
this.remoteCache = InfinispanUtil.getRemoteCache(cache);
@@ -158,26 +160,15 @@ public HotRodListener(Cache cache, int threadId) {
//private AtomicInteger listenerCount = new AtomicInteger(0);
@ClientCacheEntryCreated
- public void created(ClientCacheEntryCreatedEvent event) {
- String cacheKey = (String) event.getKey();
-
- executor.execute(() -> {
-
- event(cacheKey, event.getVersion(), true);
-
- });
+ public void created(ClientCacheEntryCreatedEvent event) {
+ executor.execute(() -> event(event.getKey(), event.getVersion(), true));
}
@ClientCacheEntryModified
- public void updated(ClientCacheEntryModifiedEvent event) {
- String cacheKey = (String) event.getKey();
- executor.execute(() -> {
-
- event(cacheKey, event.getVersion(), false);
-
- });
+ public void updated(ClientCacheEntryModifiedEvent event) {
+ executor.execute(() -> event(event.getKey(), event.getVersion(), false));
}
diff --git a/model/infinispan/src/test/java/org/keycloak/keys/infinispan/InfinispanKeyStorageProviderTest.java b/model/infinispan/src/test/java/org/keycloak/keys/infinispan/InfinispanKeyStorageProviderTest.java
index 1dfec03f973..477121863f4 100644
--- a/model/infinispan/src/test/java/org/keycloak/keys/infinispan/InfinispanKeyStorageProviderTest.java
+++ b/model/infinispan/src/test/java/org/keycloak/keys/infinispan/InfinispanKeyStorageProviderTest.java
@@ -17,19 +17,11 @@
package org.keycloak.keys.infinispan;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.FutureTask;
-import java.util.concurrent.atomic.AtomicInteger;
-
import org.infinispan.Cache;
import org.infinispan.configuration.cache.Configuration;
import org.infinispan.configuration.cache.ConfigurationBuilder;
import org.infinispan.configuration.global.GlobalConfigurationBuilder;
import org.infinispan.eviction.EvictionStrategy;
-import org.infinispan.eviction.EvictionType;
import org.infinispan.manager.DefaultCacheManager;
import org.junit.After;
import org.junit.Assert;
@@ -40,12 +32,19 @@
import org.keycloak.crypto.PublicKeysWrapper;
import org.keycloak.keys.PublicKeyLoader;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.FutureTask;
+import java.util.concurrent.atomic.AtomicInteger;
+
/**
* @author Marek Posolda
*/
public class InfinispanKeyStorageProviderTest {
- private Map counters = new ConcurrentHashMap<>();
+ private final Map counters = new ConcurrentHashMap<>();
Cache keys = getKeysCache();
Map> tasksInProgress = new ConcurrentHashMap<>();
@@ -157,14 +156,13 @@ public PublicKeysWrapper loadKeys() throws Exception {
protected Cache getKeysCache() {
GlobalConfigurationBuilder gcb = new GlobalConfigurationBuilder();
gcb.jmx().domain(InfinispanConnectionProvider.JMX_DOMAIN).enable();
- final DefaultCacheManager cacheManager = new DefaultCacheManager(gcb.build());
+ DefaultCacheManager cacheManager = new DefaultCacheManager(gcb.build());
ConfigurationBuilder cb = new ConfigurationBuilder();
cb.memory()
- .evictionStrategy(EvictionStrategy.REMOVE)
- .evictionType(EvictionType.COUNT)
- .size(InfinispanConnectionProvider.KEYS_CACHE_DEFAULT_MAX);
- cb.jmxStatistics().enabled(true);
+ .whenFull(EvictionStrategy.REMOVE)
+ .maxCount(InfinispanConnectionProvider.KEYS_CACHE_DEFAULT_MAX);
+ cb.statistics().enabled(true);
Configuration cfg = cb.build();
cacheManager.defineConfiguration(InfinispanConnectionProvider.KEYS_CACHE_NAME, cfg);
diff --git a/operator/src/test/resources/cache-ispn.xml b/operator/src/test/resources/cache-ispn.xml
index b50cb347620..672e51fa23f 100644
--- a/operator/src/test/resources/cache-ispn.xml
+++ b/operator/src/test/resources/cache-ispn.xml
@@ -18,8 +18,8 @@
+ xsi:schemaLocation="urn:infinispan:config:15.0 http://www.infinispan.org/schemas/infinispan-config-15.0.xsd"
+ xmlns="urn:infinispan:config:15.0">
diff --git a/pom.xml b/pom.xml
index 98ada6cdba1..f3800e6959b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -93,7 +93,7 @@
2.2.224
6.2.13.Final
6.2.13.Final
- 14.0.27.Final
+ 15.0.3.Final
2.1.1
@@ -311,42 +311,6 @@
pom
import
-
- org.infinispan
- infinispan-jboss-marshalling
- ${infinispan.version}
-
-
-
- org.infinispan
- infinispan-core
-
-
- org.infinispan
- infinispan-commons
-
-
-
-
- org.infinispan
- infinispan-cachestore-remote
- ${infinispan.version}
-
-
-
- org.infinispan
- infinispan-core
-
-
- org.infinispan
- infinispan-commons
-
-
- org.infinispan
- infinispan-client-hotrod
-
-
-
io.quarkus.platform
quarkus-bom
diff --git a/quarkus/config-api/pom.xml b/quarkus/config-api/pom.xml
index 8b9737609a1..b7a56a626d9 100755
--- a/quarkus/config-api/pom.xml
+++ b/quarkus/config-api/pom.xml
@@ -38,7 +38,7 @@
org.infinispan
- infinispan-commons-jakarta
+ infinispan-commons
diff --git a/quarkus/runtime/pom.xml b/quarkus/runtime/pom.xml
index 8b7448c2e3e..def75eba02d 100644
--- a/quarkus/runtime/pom.xml
+++ b/quarkus/runtime/pom.xml
@@ -457,19 +457,9 @@
-
- org.infinispan
- infinispan-client-hotrod-jakarta
-
org.infinispan
infinispan-cachestore-remote
-
-
- *
- *
-
-
com.github.ua-parser
@@ -558,11 +548,11 @@
org.infinispan
- infinispan-commons-jakarta
+ infinispan-commons
org.infinispan
- infinispan-core-jakarta
+ infinispan-core
org.infinispan
diff --git a/quarkus/runtime/src/main/resources/cache-ispn.xml b/quarkus/runtime/src/main/resources/cache-ispn.xml
index b50cb347620..672e51fa23f 100644
--- a/quarkus/runtime/src/main/resources/cache-ispn.xml
+++ b/quarkus/runtime/src/main/resources/cache-ispn.xml
@@ -18,8 +18,8 @@
+ xsi:schemaLocation="urn:infinispan:config:15.0 http://www.infinispan.org/schemas/infinispan-config-15.0.xsd"
+ xmlns="urn:infinispan:config:15.0">
diff --git a/quarkus/runtime/src/main/resources/cache-local.xml b/quarkus/runtime/src/main/resources/cache-local.xml
index b44185402a9..582e9fef87d 100644
--- a/quarkus/runtime/src/main/resources/cache-local.xml
+++ b/quarkus/runtime/src/main/resources/cache-local.xml
@@ -18,8 +18,8 @@
+ xsi:schemaLocation="urn:infinispan:config:15.0 http://www.infinispan.org/schemas/infinispan-config-15.0.xsd"
+ xmlns="urn:infinispan:config:15.0">
diff --git a/quarkus/tests/integration/src/test/resources/ExternalInfinispan/kcb-infinispan-cache-remote-store-config.xml b/quarkus/tests/integration/src/test/resources/ExternalInfinispan/kcb-infinispan-cache-remote-store-config.xml
index e008424f5b3..b69e7d6ee1f 100644
--- a/quarkus/tests/integration/src/test/resources/ExternalInfinispan/kcb-infinispan-cache-remote-store-config.xml
+++ b/quarkus/tests/integration/src/test/resources/ExternalInfinispan/kcb-infinispan-cache-remote-store-config.xml
@@ -21,9 +21,9 @@
+ xsi:schemaLocation="urn:infinispan:config:15.0 https://www.infinispan.org/schemas/infinispan-config-15.0.xsd
+ urn:infinispan:config:store:remote:15.0 https://www.infinispan.org/schemas/infinispan-cachestore-remote-config-15.0.xsd"
+ xmlns="urn:infinispan:config:15.0">
@@ -47,8 +47,8 @@
-
-
+
-
-
+
-
-
+
-
-
+
-
-
+
-
-
+
-
-
+
-
-
+
org.infinispan
- infinispan-core-jakarta
-
-
- org.infinispan
- infinispan-client-hotrod-jakarta
+ infinispan-core
org.infinispan
infinispan-tasks-api
-
-
- org.infinispan
- infinispan-core
-
-
diff --git a/testsuite/integration-arquillian/servers/auth-server/services/testsuite-providers/src/main/java/org/keycloak/testsuite/model/infinispan/InfinispanTimeServiceTask.java b/testsuite/integration-arquillian/servers/auth-server/services/testsuite-providers/src/main/java/org/keycloak/testsuite/model/infinispan/InfinispanTimeServiceTask.java
index 30ef9266acb..2f3f3c74592 100644
--- a/testsuite/integration-arquillian/servers/auth-server/services/testsuite-providers/src/main/java/org/keycloak/testsuite/model/infinispan/InfinispanTimeServiceTask.java
+++ b/testsuite/integration-arquillian/servers/auth-server/services/testsuite-providers/src/main/java/org/keycloak/testsuite/model/infinispan/InfinispanTimeServiceTask.java
@@ -48,14 +48,14 @@ public InfinispanTimeServiceTask() {
@Override
public String call() {
EmbeddedCacheManager cacheManager = context.getCacheManager();
- Map params = new HashMap();
+ Map params = new HashMap<>();
if (this.context.getParameters().isPresent())
params = this.context.getParameters().get();
if (params.containsKey("timeService")) {
offset = (int) params.get("timeService");
// rewire the Time service
- GlobalComponentRegistry cr = cacheManager.getGlobalComponentRegistry();
+ GlobalComponentRegistry cr = GlobalComponentRegistry.of(cacheManager);
BasicComponentRegistry bcr = cr.getComponent(BasicComponentRegistry.class);
bcr.replaceComponent(TimeService.class.getName(), KEYCLOAK_TIME_SERVICE, true);
cr.rewire();
diff --git a/testsuite/integration-arquillian/servers/auth-server/services/testsuite-providers/src/main/java/org/keycloak/testsuite/rest/resource/TestCacheResource.java b/testsuite/integration-arquillian/servers/auth-server/services/testsuite-providers/src/main/java/org/keycloak/testsuite/rest/resource/TestCacheResource.java
index d1f042da787..8b907d2dabf 100644
--- a/testsuite/integration-arquillian/servers/auth-server/services/testsuite-providers/src/main/java/org/keycloak/testsuite/rest/resource/TestCacheResource.java
+++ b/testsuite/integration-arquillian/servers/auth-server/services/testsuite-providers/src/main/java/org/keycloak/testsuite/rest/resource/TestCacheResource.java
@@ -17,29 +17,28 @@
package org.keycloak.testsuite.rest.resource;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-import java.util.UUID;
-import java.util.stream.Collectors;
-
import jakarta.ws.rs.Consumes;
import jakarta.ws.rs.GET;
import jakarta.ws.rs.POST;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.PathParam;
import jakarta.ws.rs.Produces;
-
import org.infinispan.Cache;
import org.infinispan.client.hotrod.RemoteCache;
+import org.infinispan.stream.CacheCollectors;
import org.keycloak.connections.infinispan.InfinispanConnectionProvider;
+import org.keycloak.connections.infinispan.InfinispanUtil;
import org.keycloak.models.KeycloakSession;
import org.keycloak.models.sessions.infinispan.changes.SessionEntityWrapper;
import org.keycloak.models.sessions.infinispan.entities.UserSessionEntity;
-import org.keycloak.connections.infinispan.InfinispanUtil;
import org.keycloak.utils.MediaType;
-import org.infinispan.stream.CacheCollectors;
+
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+import java.util.UUID;
+import java.util.stream.Collectors;
/**
* @author Marek Posolda
@@ -114,12 +113,10 @@ public void processExpiration() {
@Path("/remote-cache-stats")
@Produces(MediaType.APPLICATION_JSON)
public Map getRemoteCacheStats() {
- RemoteCache remoteCache = InfinispanUtil.getRemoteCache(cache);
- if (remoteCache == null) {
- return new HashMap<>();
- } else {
- return remoteCache.stats().getStatsMap();
- }
+ var remoteCache = InfinispanUtil.getRemoteCache(cache);
+ return remoteCache == null ?
+ Collections.emptyMap() :
+ remoteCache.serverStatistics().getStatsMap();
}
@@ -127,11 +124,11 @@ public Map getRemoteCacheStats() {
@Path("/remote-cache-last-session-refresh/{user-session-id}")
@Produces(MediaType.APPLICATION_JSON)
public int getRemoteCacheLastSessionRefresh(@PathParam("user-session-id") String userSessionId) {
- RemoteCache remoteCache = InfinispanUtil.getRemoteCache(cache);
+ RemoteCache> remoteCache = InfinispanUtil.getRemoteCache(cache);
if (remoteCache == null) {
return -1;
} else {
- SessionEntityWrapper userSession = (SessionEntityWrapper) remoteCache.get(userSessionId);
+ SessionEntityWrapper userSession = remoteCache.get(userSessionId);
if (userSession == null) {
return -1;
} else {
diff --git a/testsuite/integration-arquillian/tests/base/pom.xml b/testsuite/integration-arquillian/tests/base/pom.xml
index 763dafea053..595d24bcb57 100644
--- a/testsuite/integration-arquillian/tests/base/pom.xml
+++ b/testsuite/integration-arquillian/tests/base/pom.xml
@@ -151,7 +151,7 @@
org.infinispan
- infinispan-server-hotrod-jakarta
+ infinispan-server-hotrod
org.keycloak
diff --git a/testsuite/integration-arquillian/tests/pom.xml b/testsuite/integration-arquillian/tests/pom.xml
index bd63122c7d6..43564e79ed8 100644
--- a/testsuite/integration-arquillian/tests/pom.xml
+++ b/testsuite/integration-arquillian/tests/pom.xml
@@ -1819,7 +1819,7 @@
org.infinispan
- infinispan-core-jakarta
+ infinispan-core
diff --git a/testsuite/model/pom.xml b/testsuite/model/pom.xml
index 4dc42c2e605..195c7acfaba 100644
--- a/testsuite/model/pom.xml
+++ b/testsuite/model/pom.xml
@@ -104,7 +104,7 @@
org.infinispan
- infinispan-core-jakarta
+ infinispan-core
org.postgresql
diff --git a/testsuite/utils/pom.xml b/testsuite/utils/pom.xml
index 9c271b2f811..cdcfa7e1485 100755
--- a/testsuite/utils/pom.xml
+++ b/testsuite/utils/pom.xml
@@ -232,7 +232,7 @@
org.infinispan
- infinispan-core-jakarta
+ infinispan-core
org.infinispan