diff options
author | Simon Brandhof <simon.brandhof@sonarsource.com> | 2016-08-31 16:05:43 +0200 |
---|---|---|
committer | Simon Brandhof <simon.brandhof@sonarsource.com> | 2016-09-06 10:13:55 +0200 |
commit | f79030e299ce766ec510ce2019c7b5e77105a1cd (patch) | |
tree | 380ff3dad2fb6378b5a2338eef4d28ea9fcbefb6 /server/sonar-ce | |
parent | a8b6d946372e3dd3f1a0bacace78b9d02867897f (diff) | |
download | sonarqube-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.java | 15 | ||||
-rw-r--r-- | server/sonar-ce/src/test/java/org/sonar/ce/container/ComputeEngineContainerImplTest.java | 6 |
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 |