diff --git a/src/main/java/com/zaxxer/hikari/pool/HikariPool.java b/src/main/java/com/zaxxer/hikari/pool/HikariPool.java index f5327475..af4a7d8d 100644 --- a/src/main/java/com/zaxxer/hikari/pool/HikariPool.java +++ b/src/main/java/com/zaxxer/hikari/pool/HikariPool.java @@ -227,7 +227,8 @@ public class HikariPool extends PoolBase implements HikariPoolMXBean, IBagStateL softEvictConnections(); abortActiveConnections(assassinExecutor); } while (getTotalConnections() > 0 && clockSource.elapsedMillis(start) < TimeUnit.SECONDS.toMillis(5)); - } finally { + } + finally { assassinExecutor.shutdown(); assassinExecutor.awaitTermination(5L, TimeUnit.SECONDS); } diff --git a/src/main/java/com/zaxxer/hikari/pool/ProxyConnection.java b/src/main/java/com/zaxxer/hikari/pool/ProxyConnection.java index ef24a5a5..c6971c35 100644 --- a/src/main/java/com/zaxxer/hikari/pool/ProxyConnection.java +++ b/src/main/java/com/zaxxer/hikari/pool/ProxyConnection.java @@ -198,6 +198,9 @@ public abstract class ProxyConnection implements Connection } catch (SQLException e) { checkException(e); + if (delegate == ClosedConnection.CLOSED_CONNECTION) { + break; //connection closed in checkException + } } } @@ -220,7 +223,6 @@ public abstract class ProxyConnection implements Connection leakTask.cancel(); try { - closeStatements(); if (isCommitStateDirty && !isAutoCommit) { delegate.rollback(); lastAccess = clockSource.currentTime();