mirror of
https://github.com/keycloak/keycloak.git
synced 2026-06-08 16:42:13 -04:00
Log applied cache configurations as part of debug logs
Closes #41950 Signed-off-by: Ryan Emerson <remerson@ibm.com>
This commit is contained in:
parent
8b69465ec0
commit
b0f4b4efee
3 changed files with 23 additions and 0 deletions
|
|
@ -125,6 +125,8 @@ This cache is needed for the Brute Force Protection feature to work in a multi-n
|
|||
Action tokens are used for scenarios when a user needs to confirm an action asynchronously, for example in the emails sent by the forgot password flow.
|
||||
The `actionTokens` distributed cache is used to track metadata about action tokens.
|
||||
|
||||
TIP: You can see the applied Infinispan configuration in the logs by configuring `--log-level=info,org.keycloak.connections.infinispan:debug`.
|
||||
|
||||
=== Volatile user sessions
|
||||
|
||||
By default, regular user sessions are stored in the database and loaded on-demand to the cache.
|
||||
|
|
|
|||
|
|
@ -29,8 +29,12 @@ import java.util.concurrent.locks.ReentrantReadWriteLock;
|
|||
import java.util.stream.Collectors;
|
||||
|
||||
import org.infinispan.client.hotrod.RemoteCacheManager;
|
||||
import org.infinispan.commons.configuration.io.ConfigurationWriter;
|
||||
import org.infinispan.commons.io.StringBuilderWriter;
|
||||
import org.infinispan.commons.util.Version;
|
||||
import org.infinispan.configuration.cache.Configuration;
|
||||
import org.infinispan.configuration.global.GlobalConfiguration;
|
||||
import org.infinispan.configuration.parsing.ParserRegistry;
|
||||
import org.infinispan.health.CacheHealth;
|
||||
import org.infinispan.manager.DefaultCacheManager;
|
||||
import org.infinispan.manager.EmbeddedCacheManager;
|
||||
|
|
@ -178,6 +182,16 @@ public class DefaultInfinispanConnectionProviderFactory implements InfinispanCon
|
|||
|
||||
protected EmbeddedCacheManager createEmbeddedCacheManager(KeycloakSession session) {
|
||||
var holder = session.getProvider(CacheEmbeddedConfigProvider.class).configuration();
|
||||
|
||||
StringBuilderWriter sw = new StringBuilderWriter();
|
||||
ParserRegistry parser = new ParserRegistry();
|
||||
try (ConfigurationWriter w = ConfigurationWriter.to(sw).prettyPrint(true).build()) {
|
||||
var globalConfig = holder.getGlobalConfigurationBuilder().build();
|
||||
var cacheConfigs = holder.getNamedConfigurationBuilders().entrySet().stream().collect(Collectors.toMap(Map.Entry::getKey, e -> e.getValue().build()));
|
||||
parser.serialize(w, globalConfig, cacheConfigs);
|
||||
logger.debugf("Infinispan configuration:\n%s", sw);
|
||||
}
|
||||
|
||||
var cm = new DefaultCacheManager(holder, true);
|
||||
cm.getCache(KEYS_CACHE_NAME, true);
|
||||
cm.getCache(CRL_CACHE_NAME, true);
|
||||
|
|
|
|||
|
|
@ -128,6 +128,13 @@ public class ClusterConfigDistTest {
|
|||
result.assertClusteredCache();
|
||||
}
|
||||
|
||||
@Test
|
||||
@Launch({ "start", "--cache=ispn", "--log-level=info,org.keycloak.connections.infinispan:debug", "--http-enabled=true", "--hostname-strict=false"})
|
||||
void testPrintCacheConfigurationsDebug(CLIResult result) {
|
||||
result.assertStarted();
|
||||
result.assertMessage("Infinispan configuration");
|
||||
}
|
||||
|
||||
@Test
|
||||
@EnabledOnOs(value = { OS.LINUX, OS.MAC }, disabledReason = "different shell escaping behaviour on Windows.")
|
||||
@Launch({ "start", "--db=dev-file", "--log-level=info,org.infinispan.remoting.transport.jgroups.JGroupsTransport:debug","--http-enabled=true", "--hostname-strict=false" })
|
||||
|
|
|
|||
Loading…
Reference in a new issue