From e4c8df4307852fe90bcdfc1bd09660294d3250e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20P=C3=B6hler?= Date: Mon, 24 Feb 2025 10:01:37 +0100 Subject: [PATCH] FIX: Cancel statement before closing to avoid leaking connections --- .../datasource/pool/ExtendedPreparedStatement.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/ebean-datasource/src/main/java/io/ebean/datasource/pool/ExtendedPreparedStatement.java b/ebean-datasource/src/main/java/io/ebean/datasource/pool/ExtendedPreparedStatement.java index b5d169c..e61ad90 100644 --- a/ebean-datasource/src/main/java/io/ebean/datasource/pool/ExtendedPreparedStatement.java +++ b/ebean-datasource/src/main/java/io/ebean/datasource/pool/ExtendedPreparedStatement.java @@ -14,6 +14,7 @@ import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; +import java.sql.SQLFeatureNotSupportedException; import java.sql.Time; import java.sql.Timestamp; import java.util.Calendar; @@ -60,7 +61,15 @@ String cacheKey() { * reuse the PreparedStatement. */ void closeDestroy() throws SQLException { - delegate.close(); + if (!delegate.isClosed()) { + // Cancel might throw an exception when it is already closed + try { + delegate.cancel(); + } catch (SQLFeatureNotSupportedException e) { + Log.trace("Canceling statement not supported by JDBC-driver"); + } + delegate.close(); + } } /**