aboutsummaryrefslogtreecommitdiffstats
path: root/server/sonar-server
diff options
context:
space:
mode:
authorSébastien Lesaint <sebastien.lesaint@sonarsource.com>2017-03-30 18:50:44 +0200
committerEric Hartmann <hartmann.eric@gmail.Com>2017-04-27 09:23:18 +0200
commite5be2615ac8fa5baf68589eb9224bb3d16d882f2 (patch)
tree5a070a70d028e3d7ed6f2859bd97078d4e2531fe /server/sonar-server
parentdd09efbab2e48ee1b11a98d868493d4c5457ca69 (diff)
downloadsonarqube-e5be2615ac8fa5baf68589eb9224bb3d16d882f2.tar.gz
sonarqube-e5be2615ac8fa5baf68589eb9224bb3d16d882f2.zip
SONAR-9057 make CeQueueCleaner startable and run as startup task
Diffstat (limited to 'server/sonar-server')
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/computation/queue/CeQueueCleaner.java15
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/computation/queue/CeQueueInitializer.java13
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/computation/queue/CeQueueCleanerTest.java12
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/computation/queue/CeQueueInitializerTest.java27
4 files changed, 27 insertions, 40 deletions
diff --git a/server/sonar-server/src/main/java/org/sonar/server/computation/queue/CeQueueCleaner.java b/server/sonar-server/src/main/java/org/sonar/server/computation/queue/CeQueueCleaner.java
index df886517af7..003b66360ea 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/computation/queue/CeQueueCleaner.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/computation/queue/CeQueueCleaner.java
@@ -20,6 +20,7 @@
package org.sonar.server.computation.queue;
import java.util.List;
+import org.picocontainer.Startable;
import org.sonar.api.ce.ComputeEngineSide;
import org.sonar.api.platform.ServerUpgradeStatus;
import org.sonar.api.utils.log.Logger;
@@ -32,7 +33,7 @@ import org.sonar.db.DbSession;
* CE workers must not be started before execution of this class.
*/
@ComputeEngineSide
-public class CeQueueCleaner {
+public class CeQueueCleaner implements Startable {
private static final Logger LOGGER = Loggers.get(CeQueueCleaner.class);
@@ -46,11 +47,14 @@ public class CeQueueCleaner {
this.queue = queue;
}
- public void clean(DbSession dbSession) {
+ @Override
+ public void start() {
if (serverUpgradeStatus.isUpgraded()) {
cleanOnUpgrade();
} else {
- verifyConsistency(dbSession);
+ try (DbSession dbSession = dbClient.openSession(false)) {
+ verifyConsistency(dbSession);
+ }
}
}
@@ -73,4 +77,9 @@ public class CeQueueCleaner {
dbClient.ceTaskInputDao().deleteByUuids(dbSession, uuids);
dbSession.commit();
}
+
+ @Override
+ public void stop() {
+ // nothing to do
+ }
}
diff --git a/server/sonar-server/src/main/java/org/sonar/server/computation/queue/CeQueueInitializer.java b/server/sonar-server/src/main/java/org/sonar/server/computation/queue/CeQueueInitializer.java
index 93a260ced5a..94ea0858d0a 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/computation/queue/CeQueueInitializer.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/computation/queue/CeQueueInitializer.java
@@ -22,8 +22,6 @@ package org.sonar.server.computation.queue;
import org.sonar.api.ce.ComputeEngineSide;
import org.sonar.api.platform.Server;
import org.sonar.api.platform.ServerStartHandler;
-import org.sonar.db.DbClient;
-import org.sonar.db.DbSession;
import org.sonar.server.computation.taskprocessor.CeProcessingScheduler;
/**
@@ -34,14 +32,10 @@ import org.sonar.server.computation.taskprocessor.CeProcessingScheduler;
@ComputeEngineSide
public class CeQueueInitializer implements ServerStartHandler {
- private final DbClient dbClient;
- private final CeQueueCleaner cleaner;
private final CeProcessingScheduler scheduler;
private boolean done = false;
- public CeQueueInitializer(DbClient dbClient, CeQueueCleaner cleaner, CeProcessingScheduler scheduler) {
- this.dbClient = dbClient;
- this.cleaner = cleaner;
+ public CeQueueInitializer(CeProcessingScheduler scheduler) {
this.scheduler = scheduler;
}
@@ -54,9 +48,6 @@ public class CeQueueInitializer implements ServerStartHandler {
}
private void initCe() {
- try (DbSession dbSession = dbClient.openSession(false)) {
- cleaner.clean(dbSession);
- scheduler.startScheduling();
- }
+ scheduler.startScheduling();
}
}
diff --git a/server/sonar-server/src/test/java/org/sonar/server/computation/queue/CeQueueCleanerTest.java b/server/sonar-server/src/test/java/org/sonar/server/computation/queue/CeQueueCleanerTest.java
index 861ede73ba7..8528ee329df 100644
--- a/server/sonar-server/src/test/java/org/sonar/server/computation/queue/CeQueueCleanerTest.java
+++ b/server/sonar-server/src/test/java/org/sonar/server/computation/queue/CeQueueCleanerTest.java
@@ -46,34 +46,34 @@ public class CeQueueCleanerTest {
private CeQueueCleaner underTest = new CeQueueCleaner(dbTester.getDbClient(), serverUpgradeStatus, queue);
@Test
- public void reset_in_progress_tasks_to_pending() throws IOException {
+ public void start_resets_in_progress_tasks_to_pending() throws IOException {
insertInQueue("TASK_1", CeQueueDto.Status.PENDING);
insertInQueue("TASK_2", CeQueueDto.Status.IN_PROGRESS);
- underTest.clean(dbTester.getSession());
+ underTest.start();
assertThat(dbTester.getDbClient().ceQueueDao().countByStatus(dbTester.getSession(), CeQueueDto.Status.PENDING)).isEqualTo(2);
assertThat(dbTester.getDbClient().ceQueueDao().countByStatus(dbTester.getSession(), CeQueueDto.Status.IN_PROGRESS)).isEqualTo(0);
}
@Test
- public void clear_queue_if_version_upgrade() {
+ public void start_clears_queue_if_version_upgrade() {
when(serverUpgradeStatus.isUpgraded()).thenReturn(true);
- underTest.clean(dbTester.getSession());
+ underTest.start();
verify(queue).clear();
}
@Test
- public void delete_orphan_report_files() throws Exception {
+ public void start_deletes_orphan_report_files() throws Exception {
// analysis reports are persisted but the associated
// task is not in the queue
insertInQueue("TASK_1", CeQueueDto.Status.PENDING);
insertTaskData("TASK_1");
insertTaskData("TASK_2");
- underTest.clean(dbTester.getSession());
+ underTest.start();
CeTaskInputDao dataDao = dbTester.getDbClient().ceTaskInputDao();
Optional<CeTaskInputDao.DataStream> task1Data = dataDao.selectData(dbTester.getSession(), "TASK_1");
diff --git a/server/sonar-server/src/test/java/org/sonar/server/computation/queue/CeQueueInitializerTest.java b/server/sonar-server/src/test/java/org/sonar/server/computation/queue/CeQueueInitializerTest.java
index cd62b82b2e1..b458508a31e 100644
--- a/server/sonar-server/src/test/java/org/sonar/server/computation/queue/CeQueueInitializerTest.java
+++ b/server/sonar-server/src/test/java/org/sonar/server/computation/queue/CeQueueInitializerTest.java
@@ -20,39 +20,26 @@
package org.sonar.server.computation.queue;
import java.io.IOException;
-import org.junit.Rule;
import org.junit.Test;
-import org.mockito.InOrder;
-import org.mockito.Mockito;
import org.sonar.api.platform.Server;
-import org.sonar.api.utils.System2;
-import org.sonar.db.DbSession;
-import org.sonar.db.DbTester;
import org.sonar.server.computation.taskprocessor.CeProcessingScheduler;
-import static org.mockito.Matchers.any;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.reset;
+import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyZeroInteractions;
public class CeQueueInitializerTest {
- @Rule
- public DbTester dbTester = DbTester.create(System2.INSTANCE);
-
- Server server = mock(Server.class);
- CeQueueCleaner cleaner = mock(CeQueueCleaner.class);
- CeProcessingScheduler scheduler = mock(CeProcessingScheduler.class);
- CeQueueInitializer underTest = new CeQueueInitializer(dbTester.getDbClient(), cleaner, scheduler);
+ private Server server = mock(Server.class);
+ private CeProcessingScheduler scheduler = mock(CeProcessingScheduler.class);
+ private CeQueueInitializer underTest = new CeQueueInitializer(scheduler);
@Test
public void clean_queue_then_start_scheduler_of_workers() throws IOException {
- InOrder inOrder = Mockito.inOrder(cleaner, scheduler);
-
underTest.onServerStart(server);
- inOrder.verify(cleaner).clean(any(DbSession.class));
- inOrder.verify(scheduler).startScheduling();
+ verify(scheduler).startScheduling();
}
@Test
@@ -60,11 +47,11 @@ public class CeQueueInitializerTest {
underTest.onServerStart(server);
- reset(cleaner, scheduler);
+ reset(scheduler);
underTest.onServerStart(server);
- verifyZeroInteractions(cleaner, scheduler);
+ verifyZeroInteractions(scheduler);
}
}