From b35bc797ecef9232235031478b13c72fb5345c24 Mon Sep 17 00:00:00 2001 From: Robert Davies Date: Wed, 30 Apr 2008 06:48:20 +0000 Subject: [PATCH] Fix for https://issues.apache.org/activemq/browse/AMQ-1702 git-svn-id: https://svn.apache.org/repos/asf/activemq/trunk@652302 13f79535-47bb-0310-9956-ffa450edef68 --- .../store/jdbc/DefaultDatabaseLocker.java | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/activemq-core/src/main/java/org/apache/activemq/store/jdbc/DefaultDatabaseLocker.java b/activemq-core/src/main/java/org/apache/activemq/store/jdbc/DefaultDatabaseLocker.java index 3f8abc5dcc..a33ec84d89 100644 --- a/activemq-core/src/main/java/org/apache/activemq/store/jdbc/DefaultDatabaseLocker.java +++ b/activemq-core/src/main/java/org/apache/activemq/store/jdbc/DefaultDatabaseLocker.java @@ -37,7 +37,6 @@ public class DefaultDatabaseLocker implements DatabaseLocker { private final Statements statements; private long sleepTime = 1000; private Connection connection; - private PreparedStatement statement; private boolean stopping; public DefaultDatabaseLocker(DataSource dataSource, Statements statements) { @@ -49,7 +48,7 @@ public class DefaultDatabaseLocker implements DatabaseLocker { stopping = false; LOG.info("Attempting to acquire the exclusive lock to become the Master broker"); - + PreparedStatement statement = null; while (true) { try { connection = dataSource.getConnection(); @@ -97,16 +96,26 @@ public class DefaultDatabaseLocker implements DatabaseLocker { } public boolean keepAlive() { + PreparedStatement statement = null; + boolean result = false; try { - PreparedStatement statement = connection.prepareStatement(statements.getLockUpdateStatement()); + statement = connection.prepareStatement(statements.getLockUpdateStatement()); statement.setLong(1, System.currentTimeMillis()); int rows = statement.executeUpdate(); if (rows == 1) { - return true; + result=true; } } catch (Exception e) { LOG.error("Failed to update database lock: " + e, e); + }finally { + if (statement != null) { + try { + statement.close(); + } catch (SQLException e) { + LOG.error("Failed to close statement",e); + } + } } - return false; + return result; } }