You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by jb...@apache.org on 2020/02/12 06:35:13 UTC

[activemq] branch master updated: AMQ-7403: Potential PreparedStatement/ResultSet leak in LeaseDatabaseLocker#determineTimeDifference

This is an automated email from the ASF dual-hosted git repository.

jbonofre pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/activemq.git


The following commit(s) were added to refs/heads/master by this push:
     new 26a0f82  AMQ-7403: Potential PreparedStatement/ResultSet leak in LeaseDatabaseLocker#determineTimeDifference
     new 098fd9c  Merge pull request #450 from PascalSchumacher/possible_db_resource_leak
26a0f82 is described below

commit 26a0f8214c0e5fd290f5ff45d7376d1eae2448fb
Author: Pascal Schumacher <pa...@gmx.net>
AuthorDate: Tue Feb 11 21:11:25 2020 +0100

    AMQ-7403: Potential PreparedStatement/ResultSet leak in LeaseDatabaseLocker#determineTimeDifference
---
 .../activemq/store/jdbc/LeaseDatabaseLocker.java   | 23 +++++++++++-----------
 1 file changed, 12 insertions(+), 11 deletions(-)

diff --git a/activemq-jdbc-store/src/main/java/org/apache/activemq/store/jdbc/LeaseDatabaseLocker.java b/activemq-jdbc-store/src/main/java/org/apache/activemq/store/jdbc/LeaseDatabaseLocker.java
index f6e7f2a..547ee7e 100644
--- a/activemq-jdbc-store/src/main/java/org/apache/activemq/store/jdbc/LeaseDatabaseLocker.java
+++ b/activemq-jdbc-store/src/main/java/org/apache/activemq/store/jdbc/LeaseDatabaseLocker.java
@@ -133,19 +133,20 @@ public class LeaseDatabaseLocker extends AbstractJDBCLocker {
     }
 
     protected long determineTimeDifference(Connection connection) throws SQLException {
-        PreparedStatement statement = connection.prepareStatement(getStatements().getCurrentDateTime());
-        ResultSet resultSet = statement.executeQuery();
-        long result = 0l;
-        if (resultSet.next()) {
-            Timestamp timestamp = resultSet.getTimestamp(1);
-            long diff = System.currentTimeMillis() - timestamp.getTime();
-            if (Math.abs(diff) > maxAllowableDiffFromDBTime) {
-                // off by more than maxAllowableDiffFromDBTime so lets adjust
-                result = (-diff);
+        try (PreparedStatement statement = connection.prepareStatement(getStatements().getCurrentDateTime());
+             ResultSet resultSet = statement.executeQuery()) {
+            long result = 0l;
+            if (resultSet.next()) {
+                Timestamp timestamp = resultSet.getTimestamp(1);
+                long diff = System.currentTimeMillis() - timestamp.getTime();
+                if (Math.abs(diff) > maxAllowableDiffFromDBTime) {
+                    // off by more than maxAllowableDiffFromDBTime so lets adjust
+                    result = (-diff);
+                }
+                LOG.info(getLeaseHolderId() + " diff adjust from db: " + result + ", db time: " + timestamp);
             }
-            LOG.info(getLeaseHolderId() + " diff adjust from db: " + result + ", db time: " + timestamp);
+            return result;
         }
-        return result;
     }
 
     public void doStop(ServiceStopper stopper) throws Exception {