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;
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) {
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);