From: Marco Zanon Date: Wed, 17 Jan 2018 11:15:24 +0000 (+0000) Subject: Fixed a bug which prevented zombie connections to be reinitialized. X-Git-Tag: 6.2.3~1 X-Git-Url: https://gitweb.marcozanon.com/?a=commitdiff_plain;h=446c9c4e5f7be8599d2b74185a4f1a0f9ea072df;p=Macaco Fixed a bug which prevented zombie connections to be reinitialized. --- diff --git a/src/java/com/marcozanon/macaco/database/MDatabaseConnection.java b/src/java/com/marcozanon/macaco/database/MDatabaseConnection.java index 0e189a4..b84ad8a 100644 --- a/src/java/com/marcozanon/macaco/database/MDatabaseConnection.java +++ b/src/java/com/marcozanon/macaco/database/MDatabaseConnection.java @@ -94,16 +94,12 @@ public class MDatabaseConnection extends MObject { } } - protected void check() { + protected void check() throws MDatabaseConnectionFailureException { try { this.getConnection().prepareStatement("/* ping */ SELECT 1", PreparedStatement.RETURN_GENERATED_KEYS); } catch (SQLException exception) { - try { - this.initialize(); - } - catch (MDatabaseConnectionFailureException exception2) { // should not happen - } + this.initialize(); } } @@ -197,6 +193,9 @@ public class MDatabaseConnection extends MObject { this.setTransactionStatus(MDatabaseConnection.TransactionStatus.SUCCESSFUL); this.logStatement("### BEGIN TRANSACTION ###"); } + catch (MDatabaseConnectionFailureException exception) { + throw new MSqlTransactionException("Could not start transaction.", exception); + } catch (SQLException exception) { throw new MSqlTransactionException("Could not start transaction.", exception); } @@ -283,6 +282,12 @@ public class MDatabaseConnection extends MObject { results = new MSqlStatementResults(preparedStatement, localTypesMode); this.logStatement(preparedStatement.toString()); } + catch (MDatabaseConnectionFailureException exception) { + if (MDatabaseConnection.TransactionStatus.SUCCESSFUL == this.getTransactionStatus()) { + this.setTransactionStatus(MDatabaseConnection.TransactionStatus.FAILED); + } + throw new MSqlStatementException(String.format("Could not execute prepared statement: %s.", preparedStatement), exception); + } catch (SQLException exception) { if (MDatabaseConnection.TransactionStatus.SUCCESSFUL == this.getTransactionStatus()) { this.setTransactionStatus(MDatabaseConnection.TransactionStatus.FAILED);