diff options
| author | Keith Wall <kwall@apache.org> | 2014-01-06 06:57:42 +0000 |
|---|---|---|
| committer | Keith Wall <kwall@apache.org> | 2014-01-06 06:57:42 +0000 |
| commit | e13419eb24dca7e1f5e58ffaab7a55358232b6c5 (patch) | |
| tree | 8bcf06910446b8ee6953328240e762908407a7f4 /qpid/java/bdbstore/src | |
| parent | 05e9d18ab577a640e52a6645ef725564c9da24c8 (diff) | |
| download | qpid-python-e13419eb24dca7e1f5e58ffaab7a55358232b6c5.tar.gz | |
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
Diffstat (limited to 'qpid/java/bdbstore/src')
| -rw-r--r-- | qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/AbstractBDBMessageStore.java | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/AbstractBDBMessageStore.java b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/AbstractBDBMessageStore.java index e772498ee9..df12af5a90 100644 --- a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/AbstractBDBMessageStore.java +++ b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/AbstractBDBMessageStore.java @@ -25,6 +25,7 @@ import com.sleepycat.bind.tuple.IntegerBinding; import com.sleepycat.bind.tuple.LongBinding; import com.sleepycat.je.*; import com.sleepycat.je.Transaction; + import java.io.File; import java.lang.ref.SoftReference; import java.nio.ByteBuffer; @@ -37,7 +38,9 @@ import java.util.List; import java.util.Map; import java.util.Random; import java.util.UUID; +import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicLong; + import org.apache.commons.configuration.Configuration; import org.apache.commons.configuration.ConfigurationException; import org.apache.log4j.Logger; @@ -75,6 +78,8 @@ public abstract class AbstractBDBMessageStore implements MessageStore, DurableCo put(EnvironmentConfig.STATS_COLLECT, "false"); // Turn off stats generation - feature introduced (and on by default) from BDB JE 5.0.84 }}); + private final AtomicBoolean _closed = new AtomicBoolean(false); + private Environment _environment; private static String CONFIGURED_OBJECTS = "CONFIGURED_OBJECTS"; @@ -384,9 +389,12 @@ public abstract class AbstractBDBMessageStore implements MessageStore, DurableCo */ public void close() throws Exception { - _stateManager.attainState(State.CLOSING); - closeInternal(); - _stateManager.attainState(State.CLOSED); + if (_closed.compareAndSet(false, true)) + { + _stateManager.attainState(State.CLOSING); + closeInternal(); + _stateManager.attainState(State.CLOSED); + } } protected void closeInternal() throws Exception |
