Merge pull request #450 from PascalSchumacher/possible_db_resource_leak

AMQ-7403: Potential PreparedStatement/ResultSet leak in LeaseDatabase…
This commit is contained in:
Jean-Baptiste Onofré 2020-02-12 07:35:03 +01:00 committed by GitHub
commit 098fd9c5a9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -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 {