diff --git a/src/main/java/com/zaxxer/hikari/proxy/ConnectionProxy.java b/src/main/java/com/zaxxer/hikari/proxy/ConnectionProxy.java index c05b09b2..8229246b 100644 --- a/src/main/java/com/zaxxer/hikari/proxy/ConnectionProxy.java +++ b/src/main/java/com/zaxxer/hikari/proxy/ConnectionProxy.java @@ -147,6 +147,26 @@ public abstract class ConnectionProxy implements IHikariConnectionProxy return statement; } + private final void closeOpenStatements() + { + final int size = openStatements.size(); + if (size > 0) { + for (int i = 0; i < size; i++) { + try { + final Statement statement = openStatements.get(i); + if (statement != null) { + statement.close(); + } + } + catch (SQLException e) { + checkException(e); + } + } + + openStatements.clear(); + } + } + // ********************************************************************** // "Overridden" java.sql.Connection Methods // ********************************************************************** @@ -158,21 +178,9 @@ public abstract class ConnectionProxy implements IHikariConnectionProxy if (delegate != ClosedConnection.CLOSED_CONNECTION) { leakTask.cancel(); - final int size = openStatements.size(); - if (size > 0) { - for (int i = 0; i < size; i++) { - try { - openStatements.get(i).close(); - } - catch (SQLException e) { - checkException(e); - } - } - - openStatements.clear(); - } - try { + closeOpenStatements(); + if (isCommitStateDirty) { lastAccess = clockSource.currentTime();