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}