]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-7899 Fix availability of startup metadata in settings
authorSimon Brandhof <simon.brandhof@sonarsource.com>
Mon, 1 Aug 2016 08:16:40 +0000 (10:16 +0200)
committerSimon Brandhof <simon.brandhof@sonarsource.com>
Mon, 1 Aug 2016 09:46:49 +0000 (11:46 +0200)
server/sonar-server/src/main/java/org/sonar/server/platform/StartupMetadataPersister.java
server/sonar-server/src/main/java/org/sonar/server/platform/platformlevel/PlatformLevel3.java
server/sonar-server/src/main/java/org/sonar/server/platform/platformlevel/PlatformLevelStartup.java
server/sonar-server/src/test/java/org/sonar/server/platform/StartupMetadataPersisterTest.java
server/sonar-server/src/test/java/org/sonar/server/platform/StartupMetadataProviderTest.java

index dfb371cd14f03837d69259c5917d4f2e1e4b5fb4..f06936662dbf25210847cb3e165d1a45a26af764 100644 (file)
  */
 package org.sonar.server.platform;
 
+import com.google.common.collect.ImmutableMap;
 import java.util.Date;
 import org.sonar.api.CoreProperties;
 import org.sonar.api.Startable;
 import org.sonar.api.server.ServerSide;
 import org.sonar.api.utils.DateUtils;
 import org.sonar.db.DbClient;
-import org.sonar.db.DbSession;
-import org.sonar.db.property.PropertiesDao;
-import org.sonar.db.property.PropertyDto;
 
 /**
  * The server node marked as "startup leader" generates some information about startup. These
@@ -39,22 +37,19 @@ import org.sonar.db.property.PropertyDto;
 public class StartupMetadataPersister implements Startable {
 
   private final StartupMetadata metadata;
-  private final DbClient dbClient;
+  private final PersistentSettings persistentSettings;
 
-  public StartupMetadataPersister(StartupMetadata metadata, DbClient dbClient) {
+  public StartupMetadataPersister(StartupMetadata metadata, PersistentSettings persistentSettings) {
     this.metadata = metadata;
-    this.dbClient = dbClient;
+    this.persistentSettings = persistentSettings;
   }
 
   @Override
   public void start() {
-    try (DbSession dbSession = dbClient.openSession(false)) {
-      String startedAt = DateUtils.formatDateTime(new Date(metadata.getStartedAt()));
-      PropertiesDao dao = dbClient.propertiesDao();
-      dao.insertProperty(dbSession, new PropertyDto().setKey(CoreProperties.SERVER_ID).setValue(metadata.getStartupId()));
-      dao.insertProperty(dbSession, new PropertyDto().setKey(CoreProperties.SERVER_STARTTIME).setValue(startedAt));
-      dbSession.commit();
-    }
+    String startedAt = DateUtils.formatDateTime(new Date(metadata.getStartedAt()));
+    persistentSettings.saveProperties(ImmutableMap.of(
+      CoreProperties.SERVER_ID, metadata.getStartupId(),
+      CoreProperties.SERVER_STARTTIME, startedAt));
   }
 
   @Override
index e465ae51be63ba57c0acdf79c4491e269b9eb468..2c82b30b5614fc7398ed86fbf822a5fb01033f8c 100644 (file)
@@ -25,6 +25,7 @@ import org.sonar.server.platform.PersistentSettings;
 import org.sonar.server.platform.ServerIdGenerator;
 import org.sonar.server.platform.ServerIdLoader;
 import org.sonar.server.platform.StartupMetadataPersister;
+import org.sonar.server.startup.LogServerId;
 
 public class PlatformLevel3 extends PlatformLevel {
   public PlatformLevel3(PlatformLevel parent) {
@@ -39,6 +40,7 @@ public class PlatformLevel3 extends PlatformLevel {
       DefaultHttpDownloader.class,
       UriReader.class,
       ServerIdLoader.class,
-      ServerIdGenerator.class);
+      ServerIdGenerator.class,
+      LogServerId.class);
   }
 }
index d4f714bc1be6c9d931716b0773b92f9d270545e4..a71f3f50e2f3a9a5104716eab6dfa92f005771d0 100644 (file)
@@ -33,7 +33,6 @@ import org.sonar.server.startup.ClearRulesOverloadedDebt;
 import org.sonar.server.startup.DisplayLogOnDeprecatedProjects;
 import org.sonar.server.startup.FeedUsersLocalStartupTask;
 import org.sonar.server.startup.GeneratePluginIndex;
-import org.sonar.server.startup.LogServerId;
 import org.sonar.server.startup.RegisterDashboards;
 import org.sonar.server.startup.RegisterMetrics;
 import org.sonar.server.startup.RegisterNewMeasureFilters;
@@ -51,7 +50,6 @@ public class PlatformLevelStartup extends PlatformLevel {
   @Override
   protected void configureLevel() {
     add(GeneratePluginIndex.class,
-      LogServerId.class,
       RegisterServletFilters.class,
       ServerLifecycleNotifier.class);
     
index 364d0126b17c517ee0596060d5cff3e6328dd851..b507ea688d131890e4f0bbdd94622df4ee6d4c84 100644 (file)
  */
 package org.sonar.server.platform;
 
+import java.util.Properties;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.ExpectedException;
 import org.sonar.api.CoreProperties;
+import org.sonar.api.config.PropertyDefinitions;
 import org.sonar.api.utils.DateUtils;
 import org.sonar.api.utils.System2;
 import org.sonar.db.DbTester;
@@ -38,8 +40,9 @@ public class StartupMetadataPersisterTest {
   @Rule
   public DbTester dbTester = DbTester.create(System2.INSTANCE);
 
+  private PersistentSettings persistentSettings = new PersistentSettings(dbTester.getDbClient(), new ServerSettingsImpl(new PropertyDefinitions(), new Properties()));
   private StartupMetadata metadata = new StartupMetadata("an_id", 123_456_789L);
-  private StartupMetadataPersister underTest = new StartupMetadataPersister(metadata, dbTester.getDbClient());
+  private StartupMetadataPersister underTest = new StartupMetadataPersister(metadata, persistentSettings);
 
   @Test
   public void persist_metadata_at_startup() {
index a0e5b13e04429e9601aaa36000ed7b8910ddc237..5363cf850d153f755e9654388c08c78551116ef6 100644 (file)
  */
 package org.sonar.server.platform;
 
+import java.util.Properties;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.ExpectedException;
 import org.sonar.api.CoreProperties;
 import org.sonar.api.SonarQubeSide;
 import org.sonar.api.SonarRuntime;
+import org.sonar.api.config.PropertyDefinitions;
 import org.sonar.api.internal.SonarRuntimeImpl;
 import org.sonar.api.utils.DateUtils;
 import org.sonar.api.utils.System2;
@@ -108,7 +110,8 @@ public class StartupMetadataProviderTest {
   }
 
   private void testLoadingFromDatabase(SonarRuntime runtime, boolean isStartupLeader) {
-    new StartupMetadataPersister(new StartupMetadata(AN_ID, A_DATE), dbTester.getDbClient()).start();
+    PersistentSettings persistentSettings = new PersistentSettings(dbTester.getDbClient(), new ServerSettingsImpl(new PropertyDefinitions(), new Properties()));
+    new StartupMetadataPersister(new StartupMetadata(AN_ID, A_DATE), persistentSettings).start();
     cluster.setStartupLeader(isStartupLeader);
 
     StartupMetadata metadata = underTest.provide(uuidFactory, system, runtime, cluster, dbTester.getDbClient());