summaryrefslogtreecommitdiffstats
path: root/sonar-db
diff options
context:
space:
mode:
authorJulien Lancelot <julien.lancelot@sonarsource.com>2016-04-15 17:17:01 +0200
committerTeryk Bellahsene <teryk.bellahsene@sonarsource.com>2016-04-21 01:23:38 +0200
commita2e88e9141e5f9d5bda8b62414b816685e767227 (patch)
treeccda2ca97544a4d8833f33e6c83c702b428f9dc1 /sonar-db
parentc2412a35e2fed2ffba40825d335d72b0c66ee818 (diff)
downloadsonarqube-a2e88e9141e5f9d5bda8b62414b816685e767227.tar.gz
sonarqube-a2e88e9141e5f9d5bda8b62414b816685e767227.zip
SONAR-7187 Remove paging from api/ce/activity
In order to have no more full scan on the ce_activity table, we had to remove paging as it was executing a select count(* from ce_activity)
Diffstat (limited to 'sonar-db')
-rw-r--r--sonar-db/src/main/java/org/sonar/db/ce/CeActivityDao.java7
-rw-r--r--sonar-db/src/main/java/org/sonar/db/ce/CeQueueDao.java5
-rw-r--r--sonar-db/src/main/resources/org/sonar/db/ce/CeActivityMapper.xml5
-rw-r--r--sonar-db/src/test/java/org/sonar/db/ce/CeActivityDaoTest.java42
-rw-r--r--sonar-db/src/test/java/org/sonar/db/ce/CeQueueDaoTest.java9
5 files changed, 6 insertions, 62 deletions
diff --git a/sonar-db/src/main/java/org/sonar/db/ce/CeActivityDao.java b/sonar-db/src/main/java/org/sonar/db/ce/CeActivityDao.java
index e32a1be1535..1055de867d5 100644
--- a/sonar-db/src/main/java/org/sonar/db/ce/CeActivityDao.java
+++ b/sonar-db/src/main/java/org/sonar/db/ce/CeActivityDao.java
@@ -72,13 +72,6 @@ public class CeActivityDao implements Dao {
return mapper(dbSession).selectByQuery(query, offset, pageSize);
}
- public int countByQuery(DbSession dbSession, CeTaskQuery query) {
- if (query.isShortCircuitedByComponentUuids()) {
- return 0;
- }
- return mapper(dbSession).countByQuery(query);
- }
-
private static CeActivityMapper mapper(DbSession dbSession) {
return dbSession.getMapper(CeActivityMapper.class);
}
diff --git a/sonar-db/src/main/java/org/sonar/db/ce/CeQueueDao.java b/sonar-db/src/main/java/org/sonar/db/ce/CeQueueDao.java
index 9670c8c8068..779f7372bbf 100644
--- a/sonar-db/src/main/java/org/sonar/db/ce/CeQueueDao.java
+++ b/sonar-db/src/main/java/org/sonar/db/ce/CeQueueDao.java
@@ -22,7 +22,6 @@ package org.sonar.db.ce;
import com.google.common.base.Optional;
import java.util.List;
import org.apache.ibatis.session.RowBounds;
-import org.sonar.api.utils.Paging;
import org.sonar.api.utils.System2;
import org.sonar.db.Dao;
import org.sonar.db.DbSession;
@@ -48,14 +47,14 @@ public class CeQueueDao implements Dao {
return mapper(session).selectAllInAscOrder();
}
- public List<CeQueueDto> selectByQueryInDescOrder(DbSession dbSession, CeTaskQuery query, Paging paging) {
+ public List<CeQueueDto> selectByQueryInDescOrder(DbSession dbSession, CeTaskQuery query, int pageSize) {
if (query.isShortCircuitedByComponentUuids()
|| query.isOnlyCurrents()
|| query.getMaxExecutedAt() != null) {
return emptyList();
}
- return mapper(dbSession).selectByQueryInDescOrder(query, new RowBounds(paging.offset(), paging.pageSize()));
+ return mapper(dbSession).selectByQueryInDescOrder(query, new RowBounds(0, pageSize));
}
public int countByQuery(DbSession dbSession, CeTaskQuery query) {
diff --git a/sonar-db/src/main/resources/org/sonar/db/ce/CeActivityMapper.xml b/sonar-db/src/main/resources/org/sonar/db/ce/CeActivityMapper.xml
index 08247b4faa1..765c5f28a6b 100644
--- a/sonar-db/src/main/resources/org/sonar/db/ce/CeActivityMapper.xml
+++ b/sonar-db/src/main/resources/org/sonar/db/ce/CeActivityMapper.xml
@@ -74,11 +74,6 @@
WHERE rn BETWEEN (#{offset} * #{pageSize} + 1) AND ((#{offset} + 1) * #{pageSize})
</select>
- <select id="countByQuery" parameterType="map" resultType="int">
- select count(ca.id)
- <include refid="sqlSelectByQuery" />
- </select>
-
<sql id="sqlSelectByQuery">
from ce_activity ca
<where>
diff --git a/sonar-db/src/test/java/org/sonar/db/ce/CeActivityDaoTest.java b/sonar-db/src/test/java/org/sonar/db/ce/CeActivityDaoTest.java
index bb92b76097b..14f3a2e4c71 100644
--- a/sonar-db/src/test/java/org/sonar/db/ce/CeActivityDaoTest.java
+++ b/sonar-db/src/test/java/org/sonar/db/ce/CeActivityDaoTest.java
@@ -141,36 +141,6 @@ public class CeActivityDaoTest {
}
@Test
- public void test_countByQuery() {
- insert("TASK_1", REPORT, "PROJECT_1", CeActivityDto.Status.SUCCESS);
- insert("TASK_2", REPORT, "PROJECT_1", CeActivityDto.Status.FAILED);
- insert("TASK_3", REPORT, "PROJECT_2", CeActivityDto.Status.SUCCESS);
- insert("TASK_4", "views", null, CeActivityDto.Status.SUCCESS);
-
- // no filters
- CeTaskQuery query = new CeTaskQuery();
- assertThat(underTest.countByQuery(db.getSession(), query)).isEqualTo(4);
-
- // select by component uuid
- query = new CeTaskQuery().setComponentUuid("PROJECT_1");
- assertThat(underTest.countByQuery(db.getSession(), query)).isEqualTo(2);
-
- // select by status
- query = new CeTaskQuery().setStatuses(singletonList(CeActivityDto.Status.SUCCESS.name()));
- assertThat(underTest.countByQuery(db.getSession(), query)).isEqualTo(3);
-
- // select by type
- query = new CeTaskQuery().setType(REPORT);
- assertThat(underTest.countByQuery(db.getSession(), query)).isEqualTo(3);
- query = new CeTaskQuery().setType("views");
- assertThat(underTest.countByQuery(db.getSession(), query)).isEqualTo(1);
-
- // select by multiple conditions
- query = new CeTaskQuery().setType(REPORT).setOnlyCurrents(true).setComponentUuid("PROJECT_1");
- assertThat(underTest.countByQuery(db.getSession(), query)).isEqualTo(1);
- }
-
- @Test
public void selectByQuery_no_results_if_shortcircuited_by_component_uuids() {
insert("TASK_1", REPORT, "PROJECT_1", CeActivityDto.Status.SUCCESS);
@@ -180,15 +150,6 @@ public class CeActivityDaoTest {
}
@Test
- public void countByQuery_no_results_if_shortcircuited_by_component_uuids() {
- insert("TASK_1", REPORT, "PROJECT_1", CeActivityDto.Status.SUCCESS);
-
- CeTaskQuery query = new CeTaskQuery();
- query.setComponentUuids(Collections.<String>emptyList());
- assertThat(underTest.countByQuery(db.getSession(), query)).isEqualTo(0);
- }
-
- @Test
public void select_and_count_by_date() {
insertWithDates("UUID1", 1_450_000_000_000L, 1_470_000_000_000L);
insertWithDates("UUID2", 1_460_000_000_000L, 1_480_000_000_000L);
@@ -196,19 +157,16 @@ public class CeActivityDaoTest {
// search by min submitted date
CeTaskQuery query = new CeTaskQuery().setMinSubmittedAt(1_455_000_000_000L);
assertThat(underTest.selectByQuery(db.getSession(), query, 0, 5)).extracting("uuid").containsOnly("UUID2");
- assertThat(underTest.countByQuery(db.getSession(), query)).isEqualTo(1);
// search by max executed date
query = new CeTaskQuery().setMaxExecutedAt(1_475_000_000_000L);
assertThat(underTest.selectByQuery(db.getSession(), query, 0, 5)).extracting("uuid").containsOnly("UUID1");
- assertThat(underTest.countByQuery(db.getSession(), query)).isEqualTo(1);
// search by both dates
query = new CeTaskQuery()
.setMinSubmittedAt(1_400_000_000_000L)
.setMaxExecutedAt(1_475_000_000_000L);
assertThat(underTest.selectByQuery(db.getSession(), query, 0, 5)).extracting("uuid").containsOnly("UUID1");
- assertThat(underTest.countByQuery(db.getSession(), query)).isEqualTo(1);
}
diff --git a/sonar-db/src/test/java/org/sonar/db/ce/CeQueueDaoTest.java b/sonar-db/src/test/java/org/sonar/db/ce/CeQueueDaoTest.java
index 479bd23bf76..70fc652ad83 100644
--- a/sonar-db/src/test/java/org/sonar/db/ce/CeQueueDaoTest.java
+++ b/sonar-db/src/test/java/org/sonar/db/ce/CeQueueDaoTest.java
@@ -29,7 +29,6 @@ import java.util.Map;
import javax.annotation.Nullable;
import org.junit.Rule;
import org.junit.Test;
-import org.sonar.api.utils.Paging;
import org.sonar.api.utils.internal.TestSystem2;
import org.sonar.db.DbTester;
@@ -227,7 +226,7 @@ public class CeQueueDaoTest {
.setType(CeTaskTypes.REPORT)
.setMinSubmittedAt(100_000L);
- List<CeQueueDto> result = underTest.selectByQueryInDescOrder(db.getSession(), query, Paging.forPageIndex(1).withPageSize(1_000).andTotal(1_000));
+ List<CeQueueDto> result = underTest.selectByQueryInDescOrder(db.getSession(), query, 1_000);
int total = underTest.countByQuery(db.getSession(), query);
assertThat(result).extracting("uuid").containsExactly("TASK_5", TASK_UUID_2);
@@ -244,7 +243,7 @@ public class CeQueueDaoTest {
CeTaskQuery query = new CeTaskQuery().setOnlyCurrents(true);
- List<CeQueueDto> result = underTest.selectByQueryInDescOrder(db.getSession(), query, Paging.forPageIndex(1).withPageSize(1_000).andTotal(1_000));
+ List<CeQueueDto> result = underTest.selectByQueryInDescOrder(db.getSession(), query, 1_000);
int total = underTest.countByQuery(db.getSession(), query);
assertThat(result).isEmpty();
@@ -261,7 +260,7 @@ public class CeQueueDaoTest {
CeTaskQuery query = new CeTaskQuery().setMaxExecutedAt(1_000_000_000_000L);
- List<CeQueueDto> result = underTest.selectByQueryInDescOrder(db.getSession(), query, Paging.forPageIndex(1).withPageSize(1_000).andTotal(1_000));
+ List<CeQueueDto> result = underTest.selectByQueryInDescOrder(db.getSession(), query, 1_000);
int total = underTest.countByQuery(db.getSession(), query);
assertThat(result).isEmpty();
@@ -278,7 +277,7 @@ public class CeQueueDaoTest {
CeTaskQuery query = new CeTaskQuery().setComponentUuids(Collections.<String>emptyList());
- List<CeQueueDto> result = underTest.selectByQueryInDescOrder(db.getSession(), query, Paging.forPageIndex(1).withPageSize(1_000).andTotal(1_000));
+ List<CeQueueDto> result = underTest.selectByQueryInDescOrder(db.getSession(), query, 1_000);
int total = underTest.countByQuery(db.getSession(), query);
assertThat(result).isEmpty();