diff options
author | Julien Lancelot <julien.lancelot@sonarsource.com> | 2016-04-15 17:17:01 +0200 |
---|---|---|
committer | Teryk Bellahsene <teryk.bellahsene@sonarsource.com> | 2016-04-21 01:23:38 +0200 |
commit | a2e88e9141e5f9d5bda8b62414b816685e767227 (patch) | |
tree | ccda2ca97544a4d8833f33e6c83c702b428f9dc1 /sonar-db | |
parent | c2412a35e2fed2ffba40825d335d72b0c66ee818 (diff) | |
download | sonarqube-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')
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(); |