Updated Branches: refs/heads/sqoop2 67f634034 -> 344fa0163
SQOOP-1043: Sqoop2: Improve error messages in Derby repository (Jarek Jarcec Cecho via Kate Ting) Project: http://git-wip-us.apache.org/repos/asf/sqoop/repo Commit: http://git-wip-us.apache.org/repos/asf/sqoop/commit/344fa016 Tree: http://git-wip-us.apache.org/repos/asf/sqoop/tree/344fa016 Diff: http://git-wip-us.apache.org/repos/asf/sqoop/diff/344fa016 Branch: refs/heads/sqoop2 Commit: 344fa01636a36384980987dadfef5989edf5ea55 Parents: 67f6340 Author: Kate Ting <[email protected]> Authored: Mon May 13 00:23:19 2013 -0400 Committer: Kate Ting <[email protected]> Committed: Mon May 13 00:23:19 2013 -0400 ---------------------------------------------------------------------- .../repository/derby/DerbyRepositoryHandler.java | 53 +++++++++++++-- 1 files changed, 48 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/sqoop/blob/344fa016/repository/repository-derby/src/main/java/org/apache/sqoop/repository/derby/DerbyRepositoryHandler.java ---------------------------------------------------------------------- diff --git a/repository/repository-derby/src/main/java/org/apache/sqoop/repository/derby/DerbyRepositoryHandler.java b/repository/repository-derby/src/main/java/org/apache/sqoop/repository/derby/DerbyRepositoryHandler.java index e4f6562..45a0da4 100644 --- a/repository/repository-derby/src/main/java/org/apache/sqoop/repository/derby/DerbyRepositoryHandler.java +++ b/repository/repository-derby/src/main/java/org/apache/sqoop/repository/derby/DerbyRepositoryHandler.java @@ -351,6 +351,7 @@ public class DerbyRepositoryHandler extends JdbcRepositoryHandler { throw new SqoopException(DerbyRepoError.DERBYREPO_0005, shortName); } } catch (SQLException ex) { + logException(ex, shortName); throw new SqoopException(DerbyRepoError.DERBYREPO_0004, shortName, ex); } finally { closeStatements(baseConnectorFetchStmt, @@ -393,8 +394,8 @@ public class DerbyRepositoryHandler extends JdbcRepositoryHandler { // represented as NULL in the database. mf.setPersistenceId(1); } catch (SQLException ex) { - throw new SqoopException(DerbyRepoError.DERBYREPO_0014, - mf.toString(), ex); + logException(ex, mf); + throw new SqoopException(DerbyRepoError.DERBYREPO_0014, ex); } finally { closeStatements(baseFormStmt, baseInputStmt); } @@ -506,6 +507,7 @@ public class DerbyRepositoryHandler extends JdbcRepositoryHandler { connection.setPersistenceId(connectionId); } catch (SQLException ex) { + logException(ex, connection); throw new SqoopException(DerbyRepoError.DERBYREPO_0019, ex); } finally { closeStatements(stmt); @@ -544,6 +546,7 @@ public class DerbyRepositoryHandler extends JdbcRepositoryHandler { conn); } catch (SQLException ex) { + logException(ex, connection); throw new SqoopException(DerbyRepoError.DERBYREPO_0021, ex); } finally { closeStatements(deleteStmt, updateStmt); @@ -567,6 +570,7 @@ public class DerbyRepositoryHandler extends JdbcRepositoryHandler { return rs.getLong(1) == 1; } catch (SQLException ex) { + logException(ex, id); throw new SqoopException(DerbyRepoError.DERBYREPO_0025, ex); } finally { closeResultSets(rs); @@ -590,6 +594,7 @@ public class DerbyRepositoryHandler extends JdbcRepositoryHandler { return rs.getLong(1) != 0; } catch (SQLException e) { + logException(e, connectionId); throw new SqoopException(DerbyRepoError.DERBYREPO_0032, e); } finally { closeResultSets(rs); @@ -610,6 +615,7 @@ public class DerbyRepositoryHandler extends JdbcRepositoryHandler { dltConn.setLong(1, id); dltConn.executeUpdate(); } catch (SQLException ex) { + logException(ex, id); throw new SqoopException(DerbyRepoError.DERBYREPO_0022, ex); } finally { closeStatements(dltConn); @@ -627,6 +633,7 @@ public class DerbyRepositoryHandler extends JdbcRepositoryHandler { dltConnInput.setLong(1, id); dltConnInput.executeUpdate(); } catch (SQLException ex) { + logException(ex, id); throw new SqoopException(DerbyRepoError.DERBYREPO_0022, ex); } finally { closeStatements(dltConnInput); @@ -654,6 +661,7 @@ public class DerbyRepositoryHandler extends JdbcRepositoryHandler { return connections.get(0); } catch (SQLException ex) { + logException(ex, id); throw new SqoopException(DerbyRepoError.DERBYREPO_0023, ex); } finally { closeStatements(stmt); @@ -672,6 +680,7 @@ public class DerbyRepositoryHandler extends JdbcRepositoryHandler { return loadConnections(stmt, conn); } catch (SQLException ex) { + logException(ex); throw new SqoopException(DerbyRepoError.DERBYREPO_0023, ex); } finally { closeStatements(stmt); @@ -685,8 +694,7 @@ public class DerbyRepositoryHandler extends JdbcRepositoryHandler { * */ @Override - public List<MConnection> findConnectionsForConnector(long - connectorID, Connection conn) { + public List<MConnection> findConnectionsForConnector(long connectorID, Connection conn) { PreparedStatement stmt = null; try { stmt = conn.prepareStatement(STMT_SELECT_CONNECTION_FOR_CONNECTOR); @@ -695,6 +703,7 @@ public class DerbyRepositoryHandler extends JdbcRepositoryHandler { return loadConnections(stmt, conn); } catch (SQLException ex) { + logException(ex, connectorID); throw new SqoopException(DerbyRepoError.DERBYREPO_0023, ex); } finally { closeStatements(stmt); @@ -727,6 +736,7 @@ public class DerbyRepositoryHandler extends JdbcRepositoryHandler { deleteForm.executeUpdate(); } catch (SQLException e) { + logException(e, mConnector); throw new SqoopException(DerbyRepoError.DERBYREPO_0038, e); } finally { closeStatements(updateConnectorStatement, deleteForm, deleteInput); @@ -750,6 +760,7 @@ public class DerbyRepositoryHandler extends JdbcRepositoryHandler { deleteForm.executeUpdate(); } catch (SQLException e) { + logException(e, mFramework); throw new SqoopException(DerbyRepoError.DERBYREPO_0038, e); } finally { closeStatements(deleteForm, deleteInput); @@ -800,6 +811,7 @@ public class DerbyRepositoryHandler extends JdbcRepositoryHandler { job.setPersistenceId(jobId); } catch (SQLException ex) { + logException(ex, job); throw new SqoopException(DerbyRepoError.DERBYREPO_0026, ex); } finally { closeStatements(stmt); @@ -838,6 +850,7 @@ public class DerbyRepositoryHandler extends JdbcRepositoryHandler { conn); } catch (SQLException ex) { + logException(ex, job); throw new SqoopException(DerbyRepoError.DERBYREPO_0027, ex); } finally { closeStatements(deleteStmt, updateStmt); @@ -861,6 +874,7 @@ public class DerbyRepositoryHandler extends JdbcRepositoryHandler { return rs.getLong(1) == 1; } catch (SQLException ex) { + logException(ex, id); throw new SqoopException(DerbyRepoError.DERBYREPO_0029, ex); } finally { closeResultSets(rs); @@ -897,6 +911,7 @@ public class DerbyRepositoryHandler extends JdbcRepositoryHandler { dlt.setLong(1, id); dlt.executeUpdate(); } catch (SQLException ex) { + logException(ex, id); throw new SqoopException(DerbyRepoError.DERBYREPO_0028, ex); } finally { closeStatements(dlt); @@ -914,6 +929,7 @@ public class DerbyRepositoryHandler extends JdbcRepositoryHandler { dltInput.setLong(1, id); dltInput.executeUpdate(); } catch (SQLException ex) { + logException(ex, id); throw new SqoopException(DerbyRepoError.DERBYREPO_0028, ex); } finally { closeStatements(dltInput); @@ -941,6 +957,7 @@ public class DerbyRepositoryHandler extends JdbcRepositoryHandler { return jobs.get(0); } catch (SQLException ex) { + logException(ex, id); throw new SqoopException(DerbyRepoError.DERBYREPO_0031, ex); } finally { closeStatements(stmt); @@ -959,6 +976,7 @@ public class DerbyRepositoryHandler extends JdbcRepositoryHandler { return loadJobs(stmt, conn); } catch (SQLException ex) { + logException(ex); throw new SqoopException(DerbyRepoError.DERBYREPO_0031, ex); } finally { closeStatements(stmt); @@ -977,6 +995,7 @@ public class DerbyRepositoryHandler extends JdbcRepositoryHandler { return loadJobs(stmt, conn); } catch (SQLException ex) { + logException(ex, connectorId); throw new SqoopException(DerbyRepoError.DERBYREPO_0031, ex); } finally { closeStatements(stmt); @@ -1024,6 +1043,7 @@ public class DerbyRepositoryHandler extends JdbcRepositoryHandler { submission.setPersistenceId(submissionId); } catch (SQLException ex) { + logException(ex, submission); throw new SqoopException(DerbyRepoError.DERBYREPO_0034, ex); } finally { closeStatements(stmt); @@ -1047,6 +1067,7 @@ public class DerbyRepositoryHandler extends JdbcRepositoryHandler { return rs.getLong(1) == 1; } catch (SQLException ex) { + logException(ex, submissionId); throw new SqoopException(DerbyRepoError.DERBYREPO_0033, ex); } finally { closeResultSets(rs); @@ -1083,6 +1104,7 @@ public class DerbyRepositoryHandler extends JdbcRepositoryHandler { } } catch (SQLException ex) { + logException(ex, submission); throw new SqoopException(DerbyRepoError.DERBYREPO_0035, ex); } finally { closeStatements(stmt, deleteStmt); @@ -1101,6 +1123,7 @@ public class DerbyRepositoryHandler extends JdbcRepositoryHandler { stmt.executeUpdate(); } catch (SQLException ex) { + logException(ex, threshold); throw new SqoopException(DerbyRepoError.DERBYREPO_0036, ex); } finally { closeStatements(stmt); @@ -1130,6 +1153,7 @@ public class DerbyRepositoryHandler extends JdbcRepositoryHandler { rs = null; } } catch (SQLException ex) { + logException(ex); throw new SqoopException(DerbyRepoError.DERBYREPO_0037, ex); } finally { closeResultSets(rs); @@ -1158,6 +1182,7 @@ public class DerbyRepositoryHandler extends JdbcRepositoryHandler { return loadSubmission(rs, conn); } catch (SQLException ex) { + logException(ex, jobId); throw new SqoopException(DerbyRepoError.DERBYREPO_0037, ex); } finally { closeResultSets(rs); @@ -1826,7 +1851,8 @@ public class DerbyRepositoryHandler extends JdbcRepositoryHandler { * Any occurring exception is silently ignored and logged. * * @param stmts Statements to close - */ private void closeStatements(Statement... stmts) { + */ + private void closeStatements(Statement... stmts) { for (Statement stmt : stmts) { if(stmt != null) { try { @@ -1837,4 +1863,21 @@ public class DerbyRepositoryHandler extends JdbcRepositoryHandler { } } } + + /** + * Log exception and all String variant of arbitrary number of objects. + * + * This method is useful to log SQLException with all objects that were + * used in the query generation to see where is the issue. + * + * @param throwable Arbitrary throwable object + * @param objects Arbitrary array of associated objects + */ + private void logException(Throwable throwable, Object ...objects) { + LOG.error("Exception in repository operation", throwable); + LOG.error("Associated objects: "+ objects.length); + for(Object object : objects) { + LOG.error("\t" + object.getClass().getSimpleName() + ": " + object.toString()); + } + } }
