aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSébastien Lesaint <sebastien.lesaint@sonarsource.com>2018-07-18 15:34:29 +0200
committerSonarTech <sonartech@sonarsource.com>2018-07-19 20:21:25 +0200
commit5d8830fa08d4fd4280a029d7a9b7fbd0d7bc3fca (patch)
tree89bbd746becf0b5d67f434ce33bd50ae758ce3d9
parent9089d736c7fddb47238093009f19c76f3bc9006b (diff)
downloadsonarqube-5d8830fa08d4fd4280a029d7a9b7fbd0d7bc3fca.tar.gz
sonarqube-5d8830fa08d4fd4280a029d7a9b7fbd0d7bc3fca.zip
SONAR-10776 fix NPE when user has issues on branch without ce activity
-rw-r--r--server/sonar-db-dao/src/main/java/org/sonar/db/component/SnapshotDao.java3
-rw-r--r--server/sonar-db-dao/src/main/java/org/sonar/db/component/SnapshotMapper.java4
-rw-r--r--server/sonar-db-dao/src/main/resources/org/sonar/db/component/SnapshotMapper.xml2
-rw-r--r--server/sonar-db-dao/src/test/java/org/sonar/db/component/SnapshotDaoTest.java4
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<SnapshotDto> selectFinishedByComponentUuidsAndFromDates(@Param("componentUuidFromDatePairs") List<ComponentUuidFromDatePair> pairs,
- @Param("ceStatus") CeActivityDto.Status ceStatus);
+ List<SnapshotDto> selectFinishedByComponentUuidsAndFromDates(@Param("componentUuidFromDatePairs") List<ComponentUuidFromDatePair> 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
<foreach collection="componentUuidFromDatePairs" open="(" close=")" item="componentUuidFromDatePair" separator=" or ">
(pb.project_uuid=#{componentUuidFromDatePair.componentUuid, jdbcType=VARCHAR} and s.created_at >= #{componentUuidFromDatePair.from, jdbcType=BIGINT})
</foreach>
and s.status = 'P'
- and ca.status=#{ceStatus, jdbcType=VARCHAR}
order by
s.created_at
</select>
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<SnapshotDto> result = underTest.selectFinishedByComponentUuidsAndFromDates(dbSession, singletonList(project.uuid()), singletonList(from));
assertThat(result).extracting(SnapshotDto::getUuid)
- .containsExactlyInAnyOrder(finishedAnalysis.getUuid());
+ .containsExactlyInAnyOrder(finishedAnalysis.getUuid(), canceledAnalysis.getUuid());
}
@Test