aboutsummaryrefslogtreecommitdiffstats
path: root/sonar-db/src
diff options
context:
space:
mode:
authorSébastien Lesaint <sebastien.lesaint@sonarsource.com>2016-09-28 16:49:05 +0200
committerSébastien Lesaint <sebastien.lesaint@sonarsource.com>2016-09-28 16:49:05 +0200
commite6aae0fe8e3c6edf7b6be72bcf7932f355199a5c (patch)
tree49cfd1fa7d150e593ee525e71fec658c208d336a /sonar-db/src
parent52aaee9fa3c9ed0d68cea4aa3c4ab959a480b9cf (diff)
downloadsonarqube-e6aae0fe8e3c6edf7b6be72bcf7932f355199a5c.tar.gz
sonarqube-e6aae0fe8e3c6edf7b6be72bcf7932f355199a5c.zip
SONAR-8148 exception proof FeedFileSourcesBinaryData
Diffstat (limited to 'sonar-db/src')
-rw-r--r--sonar-db/src/main/java/org/sonar/db/version/v51/FeedFileSourcesBinaryData.java5
-rw-r--r--sonar-db/src/test/java/org/sonar/db/version/v51/FeedFileSourcesBinaryDataTest.java11
2 files changed, 11 insertions, 5 deletions
diff --git a/sonar-db/src/main/java/org/sonar/db/version/v51/FeedFileSourcesBinaryData.java b/sonar-db/src/main/java/org/sonar/db/version/v51/FeedFileSourcesBinaryData.java
index 5f93676b14c..04fb7602933 100644
--- a/sonar-db/src/main/java/org/sonar/db/version/v51/FeedFileSourcesBinaryData.java
+++ b/sonar-db/src/main/java/org/sonar/db/version/v51/FeedFileSourcesBinaryData.java
@@ -32,6 +32,7 @@ import org.apache.commons.csv.CSVParser;
import org.apache.commons.csv.CSVRecord;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang.StringUtils;
+import org.slf4j.LoggerFactory;
import org.sonar.api.utils.DateUtils;
import org.sonar.db.Database;
import org.sonar.db.protobuf.DbFileSources;
@@ -147,7 +148,9 @@ public class FeedFileSourcesBinaryData extends BaseDataChange {
}
return FileSourceDto.encodeSourceData(dataBuilder.build());
} catch (Exception e) {
- throw new IllegalStateException("Invalid FILE_SOURCES.DATA on row with ID " + fileSourceId + ": " + data, e);
+ LoggerFactory.getLogger(FeedFileSourcesBinaryData.class).error(
+ String.format("Invalid FILE_SOURCES.DATA on row with ID %s, data will be ignored: %s", fileSourceId, data), e);
+ return FileSourceDto.encodeSourceData(dataBuilder.clear().build());
} finally {
IOUtils.closeQuietly(parser);
}
diff --git a/sonar-db/src/test/java/org/sonar/db/version/v51/FeedFileSourcesBinaryDataTest.java b/sonar-db/src/test/java/org/sonar/db/version/v51/FeedFileSourcesBinaryDataTest.java
index 74f187617f0..836291c23d3 100644
--- a/sonar-db/src/test/java/org/sonar/db/version/v51/FeedFileSourcesBinaryDataTest.java
+++ b/sonar-db/src/test/java/org/sonar/db/version/v51/FeedFileSourcesBinaryDataTest.java
@@ -68,15 +68,18 @@ public class FeedFileSourcesBinaryDataTest {
}
@Test
- public void fail_to_parse_csv() throws Exception {
+ public void execute_does_not_fail_when_data_can_not_be_parsed_and_row_is_ignored() throws Exception {
db.prepareDbUnit(getClass(), "bad_data.xml");
MigrationStep migration = new FeedFileSourcesBinaryData(db.database());
- thrown.expect(IllegalStateException.class);
- thrown.expectMessage("Error during processing of row: [id=1,data=");
-
migration.execute();
+
+ try (Connection connection = db.openConnection()) {
+ DbFileSources.Data data = selectData(connection, 1L);
+
+ assertThat(data.getLinesList()).isEmpty();
+ }
}
private DbFileSources.Data selectData(Connection connection, long fileSourceId) throws SQLException {