From 5e6e2338a4395fc2042e92f356a73a6130a20606 Mon Sep 17 00:00:00 2001 From: Stephane Gamard Date: Mon, 29 Sep 2014 16:17:15 +0200 Subject: [PATCH] SONAR-5614 - Removed implicit-commit in session in Favor of BatchSession for synchronizer methods --- .../java/org/sonar/server/db/BaseDao.java | 5 ++++ .../activity/ActivityBackendMediumTest.java | 6 ----- .../issue/index/IssueIndexMediumTest.java | 23 ++++++++++++------- .../org/sonar/core/persistence/DbSession.java | 14 ----------- 4 files changed, 20 insertions(+), 28 deletions(-) diff --git a/server/sonar-server/src/main/java/org/sonar/server/db/BaseDao.java b/server/sonar-server/src/main/java/org/sonar/server/db/BaseDao.java index 097601a7326..f584ab9efd1 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/db/BaseDao.java +++ b/server/sonar-server/src/main/java/org/sonar/server/db/BaseDao.java @@ -27,6 +27,7 @@ import org.apache.ibatis.session.ResultContext; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.sonar.api.utils.System2; +import org.sonar.core.persistence.BatchSession; import org.sonar.core.persistence.DaoComponent; import org.sonar.core.persistence.DbSession; import org.sonar.core.persistence.Dto; @@ -360,6 +361,10 @@ public abstract class BaseDao, KEY extends Serializ @Override public void synchronizeAfter(final DbSession session, Date date, Map params) { + if (!session.getClass().isAssignableFrom(BatchSession.class)) { + LOGGER.warn("Synchronizer should only be used with BatchSession!"); + } + try { DbSynchronizationHandler handler = getSynchronizationResultHandler(session, params); session.select(getSynchronizeStatementFQN(), getSynchronizationParams(date, params), handler); diff --git a/server/sonar-server/src/test/java/org/sonar/server/activity/ActivityBackendMediumTest.java b/server/sonar-server/src/test/java/org/sonar/server/activity/ActivityBackendMediumTest.java index 2d1c4725ec9..0ee7cb92479 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/activity/ActivityBackendMediumTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/activity/ActivityBackendMediumTest.java @@ -115,9 +115,6 @@ public class ActivityBackendMediumTest { @Test public void massive_insert() { - // Set qeue's implicit commit size to 10 - dbSession.setImplicitCommitSize(10); - // 0 Assert no logs in DB assertThat(dao.findAll(dbSession)).hasSize(0); int max = 35; @@ -159,9 +156,6 @@ public class ActivityBackendMediumTest { @Test public void massive_log_insert() { - // Set qeue's implicit commit size to 10 - dbSession.setImplicitCommitSize(10); - // 0 Assert no logs in DB assertThat(dao.findAll(dbSession)).hasSize(0); int max = 40; diff --git a/server/sonar-server/src/test/java/org/sonar/server/issue/index/IssueIndexMediumTest.java b/server/sonar-server/src/test/java/org/sonar/server/issue/index/IssueIndexMediumTest.java index 9c29f6ed39c..81f6ba1ddf4 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/issue/index/IssueIndexMediumTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/issue/index/IssueIndexMediumTest.java @@ -20,7 +20,10 @@ package org.sonar.server.issue.index; import com.google.common.collect.ImmutableMap; -import org.junit.*; +import org.junit.After; +import org.junit.Before; +import org.junit.ClassRule; +import org.junit.Test; import org.sonar.api.issue.Issue; import org.sonar.api.issue.IssueQuery; import org.sonar.api.rule.RuleKey; @@ -568,7 +571,7 @@ public class IssueIndexMediumTest { IssueTesting.newDto(rule, file1, project1), IssueTesting.newDto(rule, file2, project2), IssueTesting.newDto(rule, file2, project3) - ); + ); session.commit(); session.clearCache(); @@ -620,7 +623,6 @@ public class IssueIndexMediumTest { } @Test - @Ignore("To be fixed") public void synchronize_a_lot_of_issues() throws Exception { ComponentDto project = new ComponentDto() .setKey("MyProject") @@ -645,14 +647,20 @@ public class IssueIndexMediumTest { } session.commit(); + // 0 Assert that all issues are both in ES and DB + assertThat(db.issueDao().findAfterDate(session, new Date(0))).hasSize(11); + assertThat(index.countAll()).isEqualTo(11); + + // Clear issue index in order to simulate these issues have been inserted without being indexed in E/S (from a previous version of SQ or from batch) tester.get(BackendCleanup.class).clearIndex(IndexDefinition.ISSUES); tester.clearIndexes(); - session.commit(); - session.clearCache(); + DbSession newSession = db.openSession(true); - newSession.setImplicitCommitSize(10); + //newSession.setImplicitCommitSize(10); + + System.out.println("index.getLastSynchronization() = " + index.getLastSynchronization()); try { db.issueDao().synchronizeAfter(newSession, index.getLastSynchronization()); newSession.commit(); @@ -666,8 +674,7 @@ public class IssueIndexMediumTest { // This test is working with executeStartupTasks ! // tester.get(Platform.class).executeStartupTasks(); + assertThat(index.countAll()).isEqualTo(11); - assertThat(index.search(IssueQuery.builder().build(), new QueryContext().setMaxLimit()).getHits()).hasSize(11); } - } diff --git a/sonar-core/src/main/java/org/sonar/core/persistence/DbSession.java b/sonar-core/src/main/java/org/sonar/core/persistence/DbSession.java index 2bca0acee02..503d302112f 100644 --- a/sonar-core/src/main/java/org/sonar/core/persistence/DbSession.java +++ b/sonar-core/src/main/java/org/sonar/core/persistence/DbSession.java @@ -34,15 +34,12 @@ import java.util.Map; public class DbSession implements SqlSession { - private static final Integer IMPLICIT_COMMIT_SIZE = 2000; private List actions; private WorkQueue queue; private SqlSession session; private int actionCount; - private Integer implicitCommitSize = IMPLICIT_COMMIT_SIZE; - DbSession(WorkQueue queue, SqlSession session) { this.actionCount = 0; this.session = session; @@ -50,20 +47,9 @@ public class DbSession implements SqlSession { this.actions = new ArrayList(); } - public Integer getImplicitCommitSize() { - return implicitCommitSize; - } - - public void setImplicitCommitSize(Integer implicitCommitSize) { - this.implicitCommitSize = implicitCommitSize; - } - public void enqueue(ClusterAction action) { actionCount++; this.actions.add(action); - if (this.actions.size() > getImplicitCommitSize()) { - this.commit(); - } } public int getActionCount() { -- 2.39.5