From fb42a118359262595a0c043c1711817ef2f3193d Mon Sep 17 00:00:00 2001 From: Gary Tully Date: Wed, 22 Jul 2009 11:58:14 +0000 Subject: [PATCH] resolve potential test hang if jdbc persistence adapter stop results in an exception, it should handle and log any exceptions git-svn-id: https://svn.apache.org/repos/asf/activemq/trunk@796681 13f79535-47bb-0310-9956-ffa450edef68 --- .../store/jdbc/DefaultDatabaseLocker.java | 23 +++++++++++++------ .../ft/DbRestartJDBCQueueMasterSlaveTest.java | 1 + 2 files changed, 17 insertions(+), 7 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 906067a1a8..41c7161b24 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 @@ -115,13 +115,22 @@ public class DefaultDatabaseLocker implements DatabaseLocker { public void stop() throws Exception { stopping = true; - if (connection != null && !connection.isClosed()) { - try { - connection.rollback(); - } catch (SQLException sqle) { - LOG.warn("Exception while rollbacking the connection on shutdown", sqle); - } - connection.close(); + try { + if (connection != null && !connection.isClosed()) { + try { + connection.rollback(); + } catch (SQLException sqle) { + LOG.warn("Exception while rollbacking the connection on shutdown", sqle); + } finally { + try { + connection.close(); + } catch (SQLException ignored) { + LOG.debug("Exception while closing connection on shutdown", ignored); + } + } + } + } catch (SQLException sqle) { + LOG.warn("Exception while checking close status of connection on shutdown", sqle); } } diff --git a/activemq-core/src/test/java/org/apache/activemq/broker/ft/DbRestartJDBCQueueMasterSlaveTest.java b/activemq-core/src/test/java/org/apache/activemq/broker/ft/DbRestartJDBCQueueMasterSlaveTest.java index 482b1f4462..a60783bf9f 100644 --- a/activemq-core/src/test/java/org/apache/activemq/broker/ft/DbRestartJDBCQueueMasterSlaveTest.java +++ b/activemq-core/src/test/java/org/apache/activemq/broker/ft/DbRestartJDBCQueueMasterSlaveTest.java @@ -14,6 +14,7 @@ public class DbRestartJDBCQueueMasterSlaveTest extends JDBCQueueMasterSlaveTest protected void messageSent() throws Exception { if (++inflightMessageCount == failureCount) { + LOG.info("STOPPING DB!@!!!!"); final EmbeddedDataSource ds = getExistingDataSource(); ds.setShutdownDatabase("shutdown"); LOG.info("DB STOPPED!@!!!!");