diff options
author | Sébastien Lesaint <sebastien.lesaint@sonarsource.com> | 2016-09-28 16:49:05 +0200 |
---|---|---|
committer | Sébastien Lesaint <sebastien.lesaint@sonarsource.com> | 2016-09-28 16:49:05 +0200 |
commit | e6aae0fe8e3c6edf7b6be72bcf7932f355199a5c (patch) | |
tree | 49cfd1fa7d150e593ee525e71fec658c208d336a /sonar-db/src | |
parent | 52aaee9fa3c9ed0d68cea4aa3c4ab959a480b9cf (diff) | |
download | sonarqube-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.java | 5 | ||||
-rw-r--r-- | sonar-db/src/test/java/org/sonar/db/version/v51/FeedFileSourcesBinaryDataTest.java | 11 |
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 { |