Skip to content

Commit

Permalink
KEYCLOAK-15631 Disable clustering for 'dev' profile. Remove cluster.x…
Browse files Browse the repository at this point in the history
…ml file from quarkus distribution packaging
  • Loading branch information
mposolda authored and pedroigor committed Sep 29, 2020
1 parent 12576e3 commit 10859eb
Show file tree
Hide file tree
Showing 11 changed files with 93 additions and 146 deletions.
10 changes: 10 additions & 0 deletions distribution/server-x/assembly.xml
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,16 @@
<outputDirectory/>
<filtered>true</filtered>
</file>
<file>
<source>target/keycloak-quarkus-server/default-clustered-cache.xml</source>
<outputDirectory>conf</outputDirectory>
<destName>clustered-cache.xml</destName>
</file>
<file>
<source>target/keycloak-quarkus-server/default-local-cache.xml</source>
<outputDirectory>conf</outputDirectory>
<destName>local-cache.xml</destName>
</file>
</files>

</assembly>
6 changes: 6 additions & 0 deletions distribution/server-x/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,12 @@
<type>zip</type>
<outputDirectory>target/</outputDirectory>
</artifactItem>
<artifactItem>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-quarkus-server</artifactId>
<type>jar</type>
<outputDirectory>target/keycloak-quarkus-server</outputDirectory>
</artifactItem>
</artifactItems>
</configuration>
</execution>
Expand Down
105 changes: 0 additions & 105 deletions distribution/server-x/src/main/content/conf/cluster.xml

This file was deleted.

26 changes: 17 additions & 9 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -1227,6 +1227,23 @@
<version>${project.version}</version>
</dependency>

<!-- Quarkus -->
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-quarkus-server</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-quarkus-server-deployment</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-quarkus-server-app</artifactId>
<version>${project.version}</version>
</dependency>

<!-- Openshift -->
<dependency>
<groupId>com.openshift</groupId>
Expand Down Expand Up @@ -1798,15 +1815,6 @@
<modules>
<module>quarkus</module>
</modules>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-quarkus-server</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
</profile>

</profiles>
Expand Down
1 change: 0 additions & 1 deletion quarkus/deployment/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-quarkus-server</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,8 @@
import static org.keycloak.configuration.PropertyMapper.forBuildTimeProperty;

import java.util.List;
import java.util.Map;
import java.util.function.Predicate;
import java.util.stream.Collectors;

import com.google.common.base.Ascii;
import io.quarkus.runtime.configuration.ProfileManager;
import io.smallrye.config.ConfigSourceInterceptorContext;
import io.smallrye.config.ConfigValue;
Expand All @@ -40,6 +37,7 @@ public final class PropertyMappers {
configureDatabasePropertyMappers();
configureHttpPropertyMappers();
configureProxyMappers();
configureClustering();
}

private static void configureHttpPropertyMappers() {
Expand Down Expand Up @@ -133,6 +131,19 @@ private static void configureDatabasePropertyMappers() {
createWithDefault("db.pool.max-size", "quarkus.datasource.jdbc.max-size", String.valueOf(100), "The maximum size of the connection pool.");
}

private static void configureClustering() {
createWithDefault("cluster.enabled", "kc.spi.connections-infinispan.default.clustered", "placeholder", (value, context) -> {
if ("true".equals(value) || "false".equals(value)) {
return value;
}

// Clustering is disabled by default for the "dev" profile. Otherwise enabled
value = ("dev".equalsIgnoreCase(ProfileManager.getActiveProfile())) ? "false" : "true";
return value;

}, "Enables Clustering. Possible values are 'true' or 'false'.");
}

static ConfigValue getValue(ConfigSourceInterceptorContext context, String name) {
return PropertyMapper.MAPPERS.getOrDefault(name, PropertyMapper.IDENTITY)
.getOrDefault(name, context, context.proceed(name));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,8 +41,10 @@
public final class QuarkusCacheManagerProvider implements ManagedCacheManagerProvider {

private static final Logger log = Logger.getLogger(QuarkusCacheManagerProvider.class);

private static final String DEFAULT_CONFIGURATION_FILE_NAME = "cluster.xml";

// Configuration files from the distribution
private static final String DEFAULT_CLUSTER_CONFIGURATION_FILE = "clustered-cache.xml";
private static final String DEFAULT_LOCAL_CONFIGURATION_FILE = "local-cache.xml";

@Override
public <C> C getCacheManager(Config.Scope config) {
Expand Down Expand Up @@ -70,38 +72,39 @@ private InputStream loadConfiguration(Config.Scope config) throws FileNotFoundEx

if (homeDir == null) {
log.warn("Keycloak home directory not set.");
return loadDefaultConfiguration(config);
return loadDefaultConfiguration(config, "default-clustered-cache.xml", "default-local-cache.xml");
}

Path configPath = Paths.get(homeDir + "/conf/" + getConfigFileName(config));

if (configPath.toFile().exists()) {
log.debugf("Loading cluster configuration from %s", configPath);
return FileLookupFactory.newInstance()
.lookupFileStrict(configPath.toUri(), Thread.currentThread().getContextClassLoader());
}
String pathPrefix = homeDir + "/conf/";

log.infof("Clustering configuration file not found at %s.", configPath);
// Always try to use "configFile" if explicitly specified
String configFile = config.get("configFile");
if (configFile != null) {
Path configPath = Paths.get(pathPrefix + configFile);

if (configPath.toFile().exists()) {
log.infof("Loading cache configuration from %s", configPath);
return FileLookupFactory.newInstance()
.lookupFileStrict(configPath.toUri(), Thread.currentThread().getContextClassLoader());
} else {
log.warnf("Cache configuration file does not exists at %s . Fallback to the default configuration file", configPath);
}
}

return loadDefaultConfiguration(config);
return loadDefaultConfiguration(config, pathPrefix + DEFAULT_CLUSTER_CONFIGURATION_FILE, pathPrefix + DEFAULT_LOCAL_CONFIGURATION_FILE);
}

private InputStream loadDefaultConfiguration(Config.Scope config) throws FileNotFoundException {
private InputStream loadDefaultConfiguration(Config.Scope config, String defaultClusterConfigFile, String defaultLocalConfigFile) throws FileNotFoundException {
if (config.getBoolean("clustered", false)) {
log.debugf("Using default clustered cache configuration.");
log.infof("Using default clustered cache configuration from file %s", defaultClusterConfigFile);
return FileLookupFactory.newInstance()
.lookupFileStrict("default-clustered-cache.xml", Thread.currentThread().getContextClassLoader());
.lookupFileStrict(defaultClusterConfigFile, Thread.currentThread().getContextClassLoader());
}

log.debug("Using default local cache configuration.");
log.infof("Using default local cache configuration from file %s", defaultLocalConfigFile);

return FileLookupFactory.newInstance()
.lookupFileStrict("default-local-cache.xml", Thread.currentThread().getContextClassLoader());
}

private String getConfigFileName(Config.Scope config) {
String configFile = config.get("configFile");
return configFile == null ? DEFAULT_CONFIGURATION_FILE_NAME : configFile;
.lookupFileStrict(defaultLocalConfigFile, Thread.currentThread().getContextClassLoader());
}

private void configureTransportStack(Config.Scope config, ConfigurationBuilderHolder builder) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@

<infinispan
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:infinispan:config:9.4 http://www.infinispan.org/schemas/infinispan-config-9.4.xsd"
xmlns="urn:infinispan:config:9.4">
xsi:schemaLocation="urn:infinispan:config:10.1 http://www.infinispan.org/schemas/infinispan-config-10.1.xsd"
xmlns="urn:infinispan:config:10.1">

<cache-container name="keycloak">
<transport lock-timeout="60000"/>
Expand Down
4 changes: 2 additions & 2 deletions quarkus/runtime/src/main/resources/default-local-cache.xml
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@

<infinispan
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:infinispan:config:9.4 http://www.infinispan.org/schemas/infinispan-config-9.4.xsd"
xmlns="urn:infinispan:config:9.4">
xsi:schemaLocation="urn:infinispan:config:10.1 http://www.infinispan.org/schemas/infinispan-config-10.1.xsd"
xmlns="urn:infinispan:config:10.1">

<cache-container name="keycloak">
<local-cache name="default">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -234,6 +234,23 @@ public void testNestedDatabaseProperties() {
Assert.assertEquals("foo-val3", config.getConfigValue("quarkus.datasource.bar").getValue());
}

@Test
public void testClusterConfig() {
// Cluster enabled by default, but disabled for the "dev" profile
Assert.assertTrue(initConfig("connectionsInfinispan", "default").getBoolean("clustered"));
System.setProperty("kc.profile", "dev");
Assert.assertFalse(initConfig("connectionsInfinispan", "default").getBoolean("clustered"));

// If explicitly set, then it is always used regardless of the profile
System.clearProperty("kc.profile");
System.setProperty("kc.config.args", "--cluster-enabled=true");

Assert.assertTrue(initConfig("connectionsInfinispan", "default").getBoolean("clustered"));
System.setProperty("kc.profile", "dev");
Assert.assertTrue(initConfig("connectionsInfinispan", "default").getBoolean("clustered"));

}

private Config.Scope initConfig(String... scope) {
Config.init(new MicroProfileConfigProvider(createConfig()));
return Config.scope(scope);
Expand Down
2 changes: 0 additions & 2 deletions quarkus/server/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -18,15 +18,13 @@
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-quarkus-server</artifactId>
<version>${project.version}</version>
</dependency>

<!-- This dependency should not be here but due to the structure of the modules we need to make sure it is built
before this module -->
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-quarkus-server-deployment</artifactId>
<version>${project.version}</version>
<scope>compile</scope>
<exclusions>
<exclusion>
Expand Down

0 comments on commit 10859eb

Please sign in to comment.