From 5d8830fa08d4fd4280a029d7a9b7fbd0d7bc3fca Mon Sep 17 00:00:00 2001 From: =?utf8?q?S=C3=A9bastien=20Lesaint?= Date: Wed, 18 Jul 2018 15:34:29 +0200 Subject: [PATCH] SONAR-10776 fix NPE when user has issues on branch without ce activity --- .../src/main/java/org/sonar/db/component/SnapshotDao.java | 3 +-- .../src/main/java/org/sonar/db/component/SnapshotMapper.java | 4 +--- .../main/resources/org/sonar/db/component/SnapshotMapper.xml | 2 -- .../src/test/java/org/sonar/db/component/SnapshotDaoTest.java | 4 ++-- 4 files changed, 4 insertions(+), 9 deletions(-) diff --git a/server/sonar-db-dao/src/main/java/org/sonar/db/component/SnapshotDao.java b/server/sonar-db-dao/src/main/java/org/sonar/db/component/SnapshotDao.java index bfb362e478f..ae2e55d4f54 100644 --- a/server/sonar-db-dao/src/main/java/org/sonar/db/component/SnapshotDao.java +++ b/server/sonar-db-dao/src/main/java/org/sonar/db/component/SnapshotDao.java @@ -32,7 +32,6 @@ import org.apache.ibatis.session.RowBounds; import org.sonar.core.util.stream.MoreCollectors; import org.sonar.db.Dao; import org.sonar.db.DbSession; -import org.sonar.db.ce.CeActivityDto.Status; import static com.google.common.base.Preconditions.checkArgument; import static com.google.common.base.Preconditions.checkState; @@ -111,7 +110,7 @@ public class SnapshotDao implements Dao { .mapToObj(i -> new ComponentUuidFromDatePair(componentUuids.get(i), fromDates.get(i))) .collect(MoreCollectors.toList(componentUuids.size())); - return executeLargeInputs(componentUuidFromDatePairs, partition -> mapper(dbSession).selectFinishedByComponentUuidsAndFromDates(partition, Status.SUCCESS), i -> i / 2); + return executeLargeInputs(componentUuidFromDatePairs, partition -> mapper(dbSession).selectFinishedByComponentUuidsAndFromDates(partition), i -> i / 2); } public void switchIsLastFlagAndSetProcessedStatus(DbSession dbSession, String componentUuid, String analysisUuid) { diff --git a/server/sonar-db-dao/src/main/java/org/sonar/db/component/SnapshotMapper.java b/server/sonar-db-dao/src/main/java/org/sonar/db/component/SnapshotMapper.java index 17d6c1cdfd3..66eacc9af67 100644 --- a/server/sonar-db-dao/src/main/java/org/sonar/db/component/SnapshotMapper.java +++ b/server/sonar-db-dao/src/main/java/org/sonar/db/component/SnapshotMapper.java @@ -24,7 +24,6 @@ import java.util.List; import javax.annotation.CheckForNull; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.session.RowBounds; -import org.sonar.db.ce.CeActivityDto; import org.sonar.db.component.SnapshotDao.ComponentUuidFromDatePair; public interface SnapshotMapper { @@ -55,7 +54,6 @@ public interface SnapshotMapper { void update(SnapshotDto analysis); - List selectFinishedByComponentUuidsAndFromDates(@Param("componentUuidFromDatePairs") List pairs, - @Param("ceStatus") CeActivityDto.Status ceStatus); + List selectFinishedByComponentUuidsAndFromDates(@Param("componentUuidFromDatePairs") List pairs); } diff --git a/server/sonar-db-dao/src/main/resources/org/sonar/db/component/SnapshotMapper.xml b/server/sonar-db-dao/src/main/resources/org/sonar/db/component/SnapshotMapper.xml index 3cf493d3241..03f78b74776 100644 --- a/server/sonar-db-dao/src/main/resources/org/sonar/db/component/SnapshotMapper.xml +++ b/server/sonar-db-dao/src/main/resources/org/sonar/db/component/SnapshotMapper.xml @@ -105,13 +105,11 @@ from snapshots s inner join projects p on p.uuid=s.component_uuid and p.enabled=${_true} inner join project_branches pb on pb.uuid=p.uuid - inner join ce_activity ca on ca.analysis_uuid = s.uuid and ca.component_uuid = pb.project_uuid where (pb.project_uuid=#{componentUuidFromDatePair.componentUuid, jdbcType=VARCHAR} and s.created_at >= #{componentUuidFromDatePair.from, jdbcType=BIGINT}) and s.status = 'P' - and ca.status=#{ceStatus, jdbcType=VARCHAR} order by s.created_at diff --git a/server/sonar-db-dao/src/test/java/org/sonar/db/component/SnapshotDaoTest.java b/server/sonar-db-dao/src/test/java/org/sonar/db/component/SnapshotDaoTest.java index 88fcd2f8203..a4a00f53aba 100644 --- a/server/sonar-db-dao/src/test/java/org/sonar/db/component/SnapshotDaoTest.java +++ b/server/sonar-db-dao/src/test/java/org/sonar/db/component/SnapshotDaoTest.java @@ -235,7 +235,7 @@ public class SnapshotDaoTest { } @Test - public void selectFinishedByComponentUuidsAndFromDates_ignores_unsuccessful_analysis() { + public void selectFinishedByComponentUuidsAndFromDates_returns_processed_analysis_even_if_analysis_failed() { long from = 1_500_000_000_000L; ComponentDto project = db.components().insertMainBranch(); SnapshotDto unprocessedAnalysis = db.components().insertSnapshot(project, s -> s.setStatus(STATUS_UNPROCESSED).setCreatedAt(from + 1_000_000L)); @@ -248,7 +248,7 @@ public class SnapshotDaoTest { List result = underTest.selectFinishedByComponentUuidsAndFromDates(dbSession, singletonList(project.uuid()), singletonList(from)); assertThat(result).extracting(SnapshotDto::getUuid) - .containsExactlyInAnyOrder(finishedAnalysis.getUuid()); + .containsExactlyInAnyOrder(finishedAnalysis.getUuid(), canceledAnalysis.getUuid()); } @Test -- 2.39.5