From e13419eb24dca7e1f5e58ffaab7a55358232b6c5 Mon Sep 17 00:00:00 2001 From: Keith Wall Date: Mon, 6 Jan 2014 06:57:42 +0000 Subject: QPID-5211: [Java Broker] Prevent spurious 'No valid transition from state CLOSED..' when shutting down a broker configure with a JDBC or BDB vhost git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1555690 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/qpid/server/store/AbstractJDBCMessageStore.java | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) (limited to 'qpid/java/broker-core') diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/AbstractJDBCMessageStore.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/AbstractJDBCMessageStore.java index 4a1452d86c..1e19fd20b2 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/AbstractJDBCMessageStore.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/AbstractJDBCMessageStore.java @@ -79,7 +79,7 @@ abstract public class AbstractJDBCMessageStore implements MessageStore, DurableC private static final int DB_VERSION = 7; private final AtomicLong _messageId = new AtomicLong(0); - private AtomicBoolean _closed = new AtomicBoolean(false); + private final AtomicBoolean _closed = new AtomicBoolean(false); private static final String CREATE_DB_VERSION_TABLE = "CREATE TABLE "+ DB_VERSION_TABLE_NAME + " ( version int not null )"; private static final String INSERT_INTO_DB_VERSION = "INSERT INTO "+ DB_VERSION_TABLE_NAME + " ( version ) VALUES ( ? )"; @@ -670,12 +670,15 @@ abstract public class AbstractJDBCMessageStore implements MessageStore, DurableC @Override public void close() throws Exception { - _closed.getAndSet(true); - _stateManager.attainState(State.CLOSING); + if (_closed.compareAndSet(false, true)) + { + _closed.getAndSet(true); + _stateManager.attainState(State.CLOSING); - doClose(); + doClose(); - _stateManager.attainState(State.CLOSED); + _stateManager.attainState(State.CLOSED); + } } -- cgit v1.2.1