]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-4587 When a SQL error occurs during SonarQube migration, the root SQL cause...
authorSimon Brandhof <simon.brandhof@gmail.com>
Tue, 17 Sep 2013 07:23:11 +0000 (09:23 +0200)
committerSimon Brandhof <simon.brandhof@gmail.com>
Tue, 17 Sep 2013 07:23:11 +0000 (09:23 +0200)
sonar-server/src/main/java/org/sonar/server/db/migrations/ConvertViolationsToIssues.java

index be1d2c4ce5e6f1ea4f82ba79e507b08165a108a2..6ec983f957f9e3ddfd49795d8b6f7afa2924cce6 100644 (file)
@@ -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);