aboutsummaryrefslogtreecommitdiffstats
path: root/sonar-server
diff options
context:
space:
mode:
authorSimon Brandhof <simon.brandhof@gmail.com>2013-09-17 09:23:11 +0200
committerSimon Brandhof <simon.brandhof@gmail.com>2013-09-17 09:23:11 +0200
commit339adafa5f50a1fb95567b103357fa3611a261d9 (patch)
treef81f04e12f5b206f42495b8f5828ec7521707d0c /sonar-server
parentee1d65b5c6b4a8bc15b14235ede5e701cad57e21 (diff)
downloadsonarqube-339adafa5f50a1fb95567b103357fa3611a261d9.tar.gz
sonarqube-339adafa5f50a1fb95567b103357fa3611a261d9.zip
SONAR-4587 When a SQL error occurs during SonarQube migration, the root SQL cause is sometimes missing
Diffstat (limited to 'sonar-server')
-rw-r--r--sonar-server/src/main/java/org/sonar/server/db/migrations/ConvertViolationsToIssues.java14
1 files changed, 12 insertions, 2 deletions
diff --git a/sonar-server/src/main/java/org/sonar/server/db/migrations/ConvertViolationsToIssues.java b/sonar-server/src/main/java/org/sonar/server/db/migrations/ConvertViolationsToIssues.java
index be1d2c4ce5e..6ec983f957f 100644
--- a/sonar-server/src/main/java/org/sonar/server/db/migrations/ConvertViolationsToIssues.java
+++ b/sonar-server/src/main/java/org/sonar/server/db/migrations/ConvertViolationsToIssues.java
@@ -27,8 +27,10 @@ import org.apache.commons.dbutils.DbUtils;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.ResultSetHandler;
import org.apache.commons.dbutils.handlers.AbstractListHandler;
+import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.sonar.api.rule.Severity;
+import org.sonar.api.utils.MessageException;
import org.sonar.core.persistence.Database;
import org.sonar.core.persistence.dialect.Oracle;
import org.sonar.server.db.DatabaseMigration;
@@ -81,6 +83,7 @@ public class ConvertViolationsToIssues implements DatabaseMigration {
private static final String SEVERITY_MAJOR = "MAJOR";
private QueryRunner runner = new QueryRunner();
+ private Logger logger = LoggerFactory.getLogger(ConvertViolationsToIssues.class);
@Override
public void execute(Database db) {
@@ -91,8 +94,15 @@ public class ConvertViolationsToIssues implements DatabaseMigration {
writeConnection.setAutoCommit(false);
truncateIssueTables(writeConnection);
convertViolations(readConnection, new Converter(db, runner, readConnection, writeConnection));
- } catch (Exception e) {
- throw new IllegalStateException("Fail to convert violations to issues", e);
+ } catch (SQLException e) {
+ logger.error("Fail to convert violations to issues", e);
+ SQLException next = e.getNextException();
+ while (next!=null) {
+ logger.error("SQL error: {}. Message: {}", next.getSQLState(), next.getMessage());
+ next = next.getNextException();
+ }
+ throw MessageException.of("Fail to convert violations to issues");
+
} finally {
DbUtils.closeQuietly(readConnection);
DbUtils.closeQuietly(writeConnection);