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:45 UTC
[activemq] branch activemq-5.15.x 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 activemq-5.15.x
in repository https://gitbox.apache.org/repos/asf/activemq.git
The following commit(s) were added to refs/heads/activemq-5.15.x by this push:
new 058b7a7 AMQ-7403: Potential PreparedStatement/ResultSet leak in LeaseDatabaseLocker#determineTimeDifference
058b7a7 is described below
commit 058b7a7b53898d3dbbec2dbbc78598f4b1e9f109
Author: Pascal Schumacher <pa...@gmx.net>
AuthorDate: Tue Feb 11 21:11:25 2020 +0100
AMQ-7403: Potential PreparedStatement/ResultSet leak in LeaseDatabaseLocker#determineTimeDifference
(cherry picked from commit 26a0f8214c0e5fd290f5ff45d7376d1eae2448fb)
---
.../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 {