diff --git a/model/infinispan/src/main/java/org/keycloak/connections/infinispan/DefaultInfinispanConnectionProviderFactory.java b/model/infinispan/src/main/java/org/keycloak/connections/infinispan/DefaultInfinispanConnectionProviderFactory.java
index 1d126329615a..d64acdd20ef2 100755
--- a/model/infinispan/src/main/java/org/keycloak/connections/infinispan/DefaultInfinispanConnectionProviderFactory.java
+++ b/model/infinispan/src/main/java/org/keycloak/connections/infinispan/DefaultInfinispanConnectionProviderFactory.java
@@ -384,6 +384,10 @@ private void configureRemoteCacheStore(ConfigurationBuilder builder, boolean asy
String jdgServer = config.get("remoteStoreHost", "localhost");
Integer jdgPort = config.getInt("remoteStorePort", 11222);
+ // After upgrade to Infinispan 12.1.7.Final it's required that both remote store and embedded cache use
+ // the same key media type to allow segmentation. Also, the number of segments in an embedded cache needs to match number of segments in the remote store.
+ boolean segmented = config.getBoolean("segmented", false);
+
builder.persistence()
.passivation(false)
.addStore(RemoteStoreConfigurationBuilder.class)
@@ -393,6 +397,7 @@ private void configureRemoteCacheStore(ConfigurationBuilder builder, boolean asy
.preload(false)
.shared(true)
.remoteCacheName(cacheName)
+ .segmented(segmented)
.rawValues(true)
.forceReturnValues(false)
.marshaller(KeycloakHotRodMarshallerFactory.class.getName())
@@ -408,6 +413,10 @@ private void configureRemoteActionTokenCacheStore(ConfigurationBuilder builder,
String jdgServer = config.get("remoteStoreHost", "localhost");
Integer jdgPort = config.getInt("remoteStorePort", 11222);
+ // After upgrade to Infinispan 12.1.7.Final it's required that both remote store and embedded cache use
+ // the same key media type to allow segmentation. Also, the number of segments in an embedded cache needs to match number of segments in the remote store.
+ boolean segmented = config.getBoolean("segmented", false);
+
builder.persistence()
.passivation(false)
.addStore(RemoteStoreConfigurationBuilder.class)
@@ -417,6 +426,7 @@ private void configureRemoteActionTokenCacheStore(ConfigurationBuilder builder,
.preload(true)
.shared(true)
.remoteCacheName(InfinispanConnectionProvider.ACTION_TOKEN_CACHE)
+ .segmented(segmented)
.rawValues(true)
.forceReturnValues(false)
.marshaller(KeycloakHotRodMarshallerFactory.class.getName())
diff --git a/pom.xml b/pom.xml
index 3e51541ee87d..0415c4c18dd2 100644
--- a/pom.xml
+++ b/pom.xml
@@ -78,8 +78,8 @@
2.2.3
5.3.20.Final
5.3.20.Final
- 11.0.9.Final
- 4.3.4.Final
+ 12.1.7.Final
+ 4.4.1.Final
1.3.2
2.12.1
${jackson.version}