This is an automated email from the ASF dual-hosted git repository. markt pushed a commit to branch 8.5.x in repository https://gitbox.apache.org/repos/asf/tomcat.git
commit c61aa0c3acd161e37f1c3c727ebffc8af7f6449d Author: Mark Thomas <ma...@apache.org> AuthorDate: Tue Dec 10 10:52:37 2019 +0000 Fix https://bz.apache.org/bugzilla/show_bug.cgi?id=63995 close statement Also do a complete code review of the DBCP 2 fork and fix one additional difference. --- .../tomcat/dbcp/dbcp2/DelegatingConnection.java | 2 +- .../apache/tomcat/dbcp/dbcp2/DelegatingStatement.java | 19 ++++++++++--------- webapps/docs/changelog.xml | 8 ++++++++ 3 files changed, 19 insertions(+), 10 deletions(-) diff --git a/java/org/apache/tomcat/dbcp/dbcp2/DelegatingConnection.java b/java/org/apache/tomcat/dbcp/dbcp2/DelegatingConnection.java index b06546a..1a83305 100644 --- a/java/org/apache/tomcat/dbcp/dbcp2/DelegatingConnection.java +++ b/java/org/apache/tomcat/dbcp/dbcp2/DelegatingConnection.java @@ -621,7 +621,7 @@ public class DelegatingConnection<C extends Connection> extends AbandonedTrace i // Statement's when it is closed. // DBCP-288. Not all the traced objects will be statements final List<AbandonedTrace> traces = getTrace(); - if (traces != null && traces.isEmpty()) { + if (traces != null && !traces.isEmpty()) { final List<Exception> thrownList = new ArrayList<>(); final Iterator<AbandonedTrace> traceIter = traces.iterator(); while (traceIter.hasNext()) { diff --git a/java/org/apache/tomcat/dbcp/dbcp2/DelegatingStatement.java b/java/org/apache/tomcat/dbcp/dbcp2/DelegatingStatement.java index 52f9e26..df3702e 100644 --- a/java/org/apache/tomcat/dbcp/dbcp2/DelegatingStatement.java +++ b/java/org/apache/tomcat/dbcp/dbcp2/DelegatingStatement.java @@ -155,16 +155,17 @@ public class DelegatingStatement extends AbandonedTrace implements Statement { } clearTrace(); } - if (statement != null) { - try { - statement.close(); - } catch (Exception e) { - if (connection != null) { - // Does not rethrow e. - connection.handleExceptionNoThrow(e); - } - thrownList.add(e); + clearTrace(); + } + if (statement != null) { + try { + statement.close(); + } catch (Exception e) { + if (connection != null) { + // Does not rethrow e. + connection.handleExceptionNoThrow(e); } + thrownList.add(e); } } } finally { diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml index 23ebcac..64e9b46 100644 --- a/webapps/docs/changelog.xml +++ b/webapps/docs/changelog.xml @@ -53,6 +53,14 @@ </fix> </changelog> </subsection> + <subsection name="Other"> + <changelog> + <fix> + <bug>63995</bug>: Ensure statements are closed when a pooled JDBC + connection is passivated in Tomcat's fork of Commons DBCP2. (markt) + </fix> + </changelog> + </subsection> </section> <section name="Tomcat 8.5.50 (markt)"> <subsection name="Catalina"> --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org