aboutsummaryrefslogtreecommitdiffstats
path: root/server/sonar-ce
diff options
context:
space:
mode:
authorSimon Brandhof <simon.brandhof@sonarsource.com>2016-08-31 16:05:43 +0200
committerSimon Brandhof <simon.brandhof@sonarsource.com>2016-09-06 10:13:55 +0200
commitf79030e299ce766ec510ce2019c7b5e77105a1cd (patch)
tree380ff3dad2fb6378b5a2338eef4d28ea9fcbefb6 /server/sonar-ce
parenta8b6d946372e3dd3f1a0bacace78b9d02867897f (diff)
downloadsonarqube-f79030e299ce766ec510ce2019c7b5e77105a1cd.tar.gz
sonarqube-f79030e299ce766ec510ce2019c7b5e77105a1cd.zip
SONAR-7678 server-side stateless settings
* Settings class becomes abstract as multiple implementations are used. Can't become an interface for binary backward-compatibility of API * tests should use MapSettings, an in-memory implementation of Settings * web server uses a thread-specific cache of settings when processing HTTP requests * web server does not have a cache of settings during startup, except for the system settings loaded from sonar.properties * Compute Engine uses a thread-specific cache of settings when processing a task. Cache is clear at end of task. * some useless methods of PersistentSettings are removed
Diffstat (limited to 'server/sonar-ce')
-rw-r--r--server/sonar-ce/src/main/java/org/sonar/ce/container/ComputeEngineContainerImpl.java15
-rw-r--r--server/sonar-ce/src/test/java/org/sonar/ce/container/ComputeEngineContainerImplTest.java6
2 files changed, 12 insertions, 9 deletions
diff --git a/server/sonar-ce/src/main/java/org/sonar/ce/container/ComputeEngineContainerImpl.java b/server/sonar-ce/src/main/java/org/sonar/ce/container/ComputeEngineContainerImpl.java
index fff798be3cf..a6a97ed4abe 100644
--- a/server/sonar-ce/src/main/java/org/sonar/ce/container/ComputeEngineContainerImpl.java
+++ b/server/sonar-ce/src/main/java/org/sonar/ce/container/ComputeEngineContainerImpl.java
@@ -46,7 +46,7 @@ import org.sonar.ce.CeTaskCommonsModule;
import org.sonar.ce.db.ReadOnlyPropertiesDao;
import org.sonar.ce.es.EsIndexerEnabler;
import org.sonar.ce.platform.ComputeEngineExtensionInstaller;
-import org.sonar.ce.settings.ComputeEngineSettings;
+import org.sonar.ce.settings.ProjectSettingsFactory;
import org.sonar.ce.user.CeUserSession;
import org.sonar.core.component.DefaultResourceTypes;
import org.sonar.core.config.CorePropertyDefinitions;
@@ -101,7 +101,6 @@ import org.sonar.server.notification.email.AlertsEmailTemplate;
import org.sonar.server.notification.email.EmailNotificationChannel;
import org.sonar.server.platform.DatabaseServerCompatibility;
import org.sonar.server.platform.DefaultServerUpgradeStatus;
-import org.sonar.server.platform.PersistentSettings;
import org.sonar.server.platform.ServerFileSystemImpl;
import org.sonar.server.platform.ServerImpl;
import org.sonar.server.platform.ServerLifecycleNotifier;
@@ -131,7 +130,9 @@ import org.sonar.server.rule.RuleRepositories;
import org.sonar.server.rule.index.RuleIndex;
import org.sonar.server.rule.index.RuleIndexer;
import org.sonar.server.search.EsSearchModule;
-import org.sonar.server.setting.ProjectSettingsFactory;
+import org.sonar.server.setting.DatabaseSettingLoader;
+import org.sonar.server.setting.DatabaseSettingsEnabler;
+import org.sonar.server.setting.ThreadLocalSettings;
import org.sonar.server.startup.LogServerId;
import org.sonar.server.test.index.TestIndexer;
import org.sonar.server.user.DefaultUserFinder;
@@ -208,11 +209,10 @@ public class ComputeEngineContainerImpl implements ComputeEngineContainer {
private static Object[] level1Components() {
Version apiVersion = ApiVersion.load(System2.INSTANCE);
return new Object[] {
- ComputeEngineSettings.class,
+ ThreadLocalSettings.class,
new SonarQubeVersion(apiVersion),
SonarRuntimeImpl.forSonarQube(ApiVersion.load(System2.INSTANCE), SonarQubeSide.COMPUTE_ENGINE),
UuidFactoryImpl.INSTANCE,
- UrlSettings.class,
ClusterImpl.class,
DefaultDatabase.class,
DatabaseChecker.class,
@@ -248,6 +248,10 @@ public class ComputeEngineContainerImpl implements ComputeEngineContainer {
private static Object[] level2Components() {
return new Object[] {
+ DatabaseSettingLoader.class,
+ DatabaseSettingsEnabler.class,
+ UrlSettings.class,
+
// add ReadOnlyPropertiesDao at level2 again so that it shadows PropertiesDao
ReadOnlyPropertiesDao.class,
DefaultServerUpgradeStatus.class,
@@ -270,7 +274,6 @@ public class ComputeEngineContainerImpl implements ComputeEngineContainer {
private static Object[] level3Components() {
return new Object[] {
new StartupMetadataProvider(),
- PersistentSettings.class,
UriReader.class,
ServerImpl.class
};
diff --git a/server/sonar-ce/src/test/java/org/sonar/ce/container/ComputeEngineContainerImplTest.java b/server/sonar-ce/src/test/java/org/sonar/ce/container/ComputeEngineContainerImplTest.java
index 98e1ba5c1e9..6bf1b1a3da7 100644
--- a/server/sonar-ce/src/test/java/org/sonar/ce/container/ComputeEngineContainerImplTest.java
+++ b/server/sonar-ce/src/test/java/org/sonar/ce/container/ComputeEngineContainerImplTest.java
@@ -97,15 +97,15 @@ public class ComputeEngineContainerImplTest {
);
assertThat(picoContainer.getParent().getComponentAdapters()).hasSize(
CONTAINER_ITSELF
- + 4 // level 3
+ + 3 // level 3
);
assertThat(picoContainer.getParent().getParent().getComponentAdapters()).hasSize(
CONTAINER_ITSELF
- + 11 // level 2
+ + 14 // level 2
);
assertThat(picoContainer.getParent().getParent().getParent().getComponentAdapters()).hasSize(
COMPONENTS_IN_LEVEL_1_AT_CONSTRUCTION
- + 25 // level 1
+ + 24 // level 1
+ 49 // content of DaoModule
+ 2 // content of EsSearchModule
+ 54 // content of CorePropertyDefinitions