You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by kw...@apache.org on 2018/03/14 13:10:09 UTC

qpid-broker-j git commit: QPID-7873: [Broker-J] Further tighten the onDelete contract by consistently ensuring that the message store is closed.

Repository: qpid-broker-j
Updated Branches:
  refs/heads/master 36f1dd9f4 -> e8efe5624


QPID-7873: [Broker-J] Further tighten the onDelete contract by consistently ensuring that the message store is closed.

Also fixed a defect that meant that the messages belonging to a deleted Provided BDB Store would remain on disk.


Project: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/commit/e8efe562
Tree: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/tree/e8efe562
Diff: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/diff/e8efe562

Branch: refs/heads/master
Commit: e8efe5624d5459a45bd10a887dfaa97ee55f9069
Parents: 36f1dd9
Author: Keith Wall <kw...@apache.org>
Authored: Wed Mar 14 13:07:00 2018 +0000
Committer: Keith Wall <kw...@apache.org>
Committed: Wed Mar 14 13:07:52 2018 +0000

----------------------------------------------------------------------
 .../berkeleydb/AbstractBDBMessageStore.java     | 113 ++++++++++++++++---
 .../store/berkeleydb/BDBConfigurationStore.java |  53 ++-------
 .../store/berkeleydb/BDBMessageStore.java       |  76 +++----------
 .../store/derby/DerbyConfigurationStore.java    |   9 +-
 .../server/store/derby/DerbyMessageStore.java   |   6 +-
 .../jdbc/GenericJDBCConfigurationStore.java     |   9 +-
 .../store/jdbc/GenericJDBCMessageStore.java     |   2 +-
 7 files changed, 144 insertions(+), 124 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/e8efe562/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/AbstractBDBMessageStore.java
----------------------------------------------------------------------
diff --git a/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/AbstractBDBMessageStore.java b/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/AbstractBDBMessageStore.java
index 10906ce..2e148e6 100644
--- a/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/AbstractBDBMessageStore.java
+++ b/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/AbstractBDBMessageStore.java
@@ -30,6 +30,7 @@ import java.util.Random;
 import java.util.Set;
 import java.util.UUID;
 import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.concurrent.atomic.AtomicLong;
 
 import com.google.common.util.concurrent.ListenableFuture;
@@ -37,6 +38,7 @@ import com.sleepycat.bind.tuple.LongBinding;
 import com.sleepycat.je.Cursor;
 import com.sleepycat.je.Database;
 import com.sleepycat.je.DatabaseEntry;
+import com.sleepycat.je.DatabaseNotFoundException;
 import com.sleepycat.je.LockConflictException;
 import com.sleepycat.je.LockMode;
 import com.sleepycat.je.OperationStatus;
@@ -54,6 +56,7 @@ import org.apache.qpid.server.store.EventManager;
 import org.apache.qpid.server.store.MessageEnqueueRecord;
 import org.apache.qpid.server.store.MessageHandle;
 import org.apache.qpid.server.store.MessageStore;
+import org.apache.qpid.server.store.SizeMonitoringSettings;
 import org.apache.qpid.server.store.StorableMessageMetaData;
 import org.apache.qpid.server.store.StoreException;
 import org.apache.qpid.server.store.StoredMessage;
@@ -85,6 +88,7 @@ public abstract class AbstractBDBMessageStore implements MessageStore
     private static final String BRIDGEDB_NAME = "BRIDGES";
     private static final String LINKDB_NAME = "LINKS";
     private static final String XID_DB_NAME = "XIDS";
+    private final AtomicBoolean _messageStoreOpen = new AtomicBoolean();
 
     private final EventManager _eventManager = new EventManager();
 
@@ -96,6 +100,9 @@ public abstract class AbstractBDBMessageStore implements MessageStore
             setInitialValue(1).
             setWrap(true).
             setCacheSize(100000);
+    protected ConfiguredObject<?> _parent;
+    protected long _persistentSizeLowThreshold;
+    protected long _persistentSizeHighThreshold;
 
     private boolean _limitBusted;
     private long _totalStoreSize;
@@ -106,6 +113,46 @@ public abstract class AbstractBDBMessageStore implements MessageStore
     private final Set<MessageDeleteListener> _messageDeleteListeners = Collections.newSetFromMap(new ConcurrentHashMap<>());
 
     @Override
+    public void openMessageStore(final ConfiguredObject<?> parent)
+    {
+        if (_messageStoreOpen.compareAndSet(false, true))
+        {
+            _parent = parent;
+
+            final SizeMonitoringSettings sizeMonitorSettings = (SizeMonitoringSettings) parent;
+            _persistentSizeHighThreshold = sizeMonitorSettings.getStoreOverfullSize();
+            _persistentSizeLowThreshold = sizeMonitorSettings.getStoreUnderfullSize();
+
+            if (_persistentSizeLowThreshold > _persistentSizeHighThreshold || _persistentSizeLowThreshold < 0L)
+            {
+                _persistentSizeLowThreshold = _persistentSizeHighThreshold;
+            }
+
+            doOpen(parent);
+        }
+    }
+
+    protected abstract void doOpen(final ConfiguredObject<?> parent);
+
+    @Override
+    public void closeMessageStore()
+    {
+        if (_messageStoreOpen.compareAndSet(true, false))
+        {
+            for (StoredBDBMessage<?> message : _messages)
+            {
+                message.clear();
+            }
+            _messages.clear();
+            _inMemorySize.set(0);
+            _bytesEvacuatedFromMemory.set(0);
+            doClose();
+        }
+    }
+
+    protected abstract void doClose();
+
+    @Override
     public void upgradeStoreStructure() throws StoreException
     {
         try
@@ -121,6 +168,37 @@ public abstract class AbstractBDBMessageStore implements MessageStore
         }
     }
 
+    protected void deleteMessageStoreDatabases()
+    {
+        try
+        {
+            for (String db : Arrays.asList(MESSAGE_META_DATA_DB_NAME,
+                                          MESSAGE_META_DATA_SEQ_DB_NAME,
+                                          MESSAGE_CONTENT_DB_NAME,
+                                          DELIVERY_DB_NAME,
+                                          XID_DB_NAME))
+            {
+                try
+                {
+
+                    getEnvironmentFacade().deleteDatabase(db);
+                }
+                catch (DatabaseNotFoundException ignore)
+                {
+                }
+
+            }
+        }
+        catch (IllegalStateException e)
+        {
+            getLogger().warn("Could not delete message store databases: {}", e.getMessage());
+        }
+        catch (RuntimeException e)
+        {
+            getEnvironmentFacade().handleDatabaseException("Deletion of message store databases failed", e);
+        }
+    }
+
     @Override
     public <T extends StorableMessageMetaData> MessageHandle<T> addMessage(T metaData)
     {
@@ -193,18 +271,6 @@ public abstract class AbstractBDBMessageStore implements MessageStore
     }
 
     @Override
-    public void closeMessageStore()
-    {
-        for (StoredBDBMessage<?> message : _messages)
-        {
-            message.clear();
-        }
-        _messages.clear();
-        _inMemorySize.set(0);
-        _bytesEvacuatedFromMemory.set(0);
-    }
-
-    @Override
     public MessageStoreReader newMessageStoreReader()
     {
         return new BDBMessageStoreReader();
@@ -843,15 +909,32 @@ public abstract class AbstractBDBMessageStore implements MessageStore
         return getEnvironmentFacade().openDatabase(XID_DB_NAME, DEFAULT_DATABASE_CONFIG);
     }
 
-    protected abstract void checkMessageStoreOpen();
+    protected void checkMessageStoreOpen()
+    {
+        if (!_messageStoreOpen.get())
+        {
+            throw new IllegalStateException("Message store is not open");
+        }
+    }
+
+    protected boolean isMessageStoreOpen()
+    {
+        return _messageStoreOpen.get();
+    }
 
     protected abstract ConfiguredObject<?> getParent();
 
     protected abstract EnvironmentFacade getEnvironmentFacade();
 
-    protected abstract long getPersistentSizeLowThreshold();
+    protected long getPersistentSizeLowThreshold()
+    {
+        return _persistentSizeLowThreshold;
+    }
 
-    protected abstract long getPersistentSizeHighThreshold();
+    protected long getPersistentSizeHighThreshold()
+    {
+        return _persistentSizeHighThreshold;
+    }
 
     protected abstract Logger getLogger();
 

http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/e8efe562/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBConfigurationStore.java
----------------------------------------------------------------------
diff --git a/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBConfigurationStore.java b/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBConfigurationStore.java
index ca7b4dd..f4a1e83 100644
--- a/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBConfigurationStore.java
+++ b/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBConfigurationStore.java
@@ -33,7 +33,6 @@ import java.util.Collection;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.UUID;
-import java.util.concurrent.atomic.AtomicBoolean;
 
 import com.sleepycat.je.Cursor;
 import com.sleepycat.je.Database;
@@ -50,7 +49,6 @@ import org.apache.qpid.server.store.DurableConfigurationStore;
 import org.apache.qpid.server.store.FileBasedSettings;
 import org.apache.qpid.server.store.MessageStore;
 import org.apache.qpid.server.store.MessageStoreProvider;
-import org.apache.qpid.server.store.SizeMonitoringSettings;
 import org.apache.qpid.server.store.StoreException;
 import org.apache.qpid.server.store.berkeleydb.entry.HierarchyKey;
 import org.apache.qpid.server.store.berkeleydb.tuple.ConfiguredObjectBinding;
@@ -74,7 +72,7 @@ public class BDBConfigurationStore implements MessageStoreProvider, DurableConfi
     private static final String CONFIGURED_OBJECTS_DB_NAME = "CONFIGURED_OBJECTS";
     private static final String CONFIGURED_OBJECT_HIERARCHY_DB_NAME = "CONFIGURED_OBJECT_HIERARCHY";
 
-    enum State { CLOSED, CONFIGURED, OPEN };
+    enum State { CLOSED, CONFIGURED, OPEN }
     private State _state = State.CLOSED;
     private final Object _lock = new Object();
 
@@ -344,7 +342,7 @@ public class BDBConfigurationStore implements MessageStoreProvider, DurableConfi
         {
             txn = _environmentFacade.beginTransaction(null);
 
-            Collection<UUID> removed = new ArrayList<UUID>(objects.length);
+            Collection<UUID> removed = new ArrayList<>(objects.length);
             for(ConfiguredObjectRecord record : objects)
             {
                 if(removeConfiguredObject(txn, record) == OperationStatus.SUCCESS)
@@ -559,41 +557,14 @@ public class BDBConfigurationStore implements MessageStoreProvider, DurableConfi
 
     class ProvidedBDBMessageStore extends AbstractBDBMessageStore
     {
-        private final AtomicBoolean _messageStoreOpen = new AtomicBoolean();
-
-        private long _persistentSizeLowThreshold;
-        private long _persistentSizeHighThreshold;
-
-        private ConfiguredObject<?> _parent;
-
         @Override
-        public void openMessageStore(final ConfiguredObject<?> parent)
+        protected void doOpen(final ConfiguredObject<?> parent)
         {
-            if (_messageStoreOpen.compareAndSet(false, true))
-            {
-                _parent = parent;
-
-                final SizeMonitoringSettings sizeMonitorSettings = (SizeMonitoringSettings) parent;
-                _persistentSizeHighThreshold = sizeMonitorSettings.getStoreOverfullSize();
-                _persistentSizeLowThreshold = sizeMonitorSettings.getStoreUnderfullSize();
-
-                if (_persistentSizeLowThreshold > _persistentSizeHighThreshold || _persistentSizeLowThreshold < 0l)
-                {
-                    _persistentSizeLowThreshold = _persistentSizeHighThreshold;
-                }
-            }
-        }
-
-        public boolean isMessageStoreOpen()
-        {
-            return _messageStoreOpen.get();
         }
 
         @Override
-        public void closeMessageStore()
+        protected void doClose()
         {
-            super.closeMessageStore();
-            _messageStoreOpen.set(false);
         }
 
         @Override
@@ -605,7 +576,12 @@ public class BDBConfigurationStore implements MessageStoreProvider, DurableConfi
         @Override
         public void onDelete(ConfiguredObject<?> parent)
         {
-            // Nothing to do, message store will be deleted when configuration store is deleted
+            if (isMessageStoreOpen())
+            {
+                throw new IllegalStateException("Cannot delete the store as store is still open");
+            }
+
+            deleteMessageStoreDatabases();
         }
 
         @Override
@@ -639,15 +615,6 @@ public class BDBConfigurationStore implements MessageStoreProvider, DurableConfi
         }
 
         @Override
-        protected void checkMessageStoreOpen()
-        {
-            if (!_messageStoreOpen.get())
-            {
-                throw new IllegalStateException("Message store is not open");
-            }
-        }
-
-        @Override
         protected Logger getLogger()
         {
             return LOGGER;

http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/e8efe562/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStore.java
----------------------------------------------------------------------
diff --git a/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStore.java b/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStore.java
index 83df5aa..c3e4133 100644
--- a/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStore.java
+++ b/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStore.java
@@ -41,15 +41,8 @@ public class BDBMessageStore extends AbstractBDBMessageStore
 
     private final EnvironmentFacadeFactory _environmentFacadeFactory;
 
-    private final AtomicBoolean _messageStoreOpen = new AtomicBoolean();
-
     private EnvironmentFacade _environmentFacade;
 
-    private ConfiguredObject<?> _parent;
-
-    private long _persistentSizeLowThreshold;
-    private long _persistentSizeHighThreshold;
-
     public BDBMessageStore()
     {
         this(new StandardEnvironmentFacadeFactory());
@@ -61,42 +54,24 @@ public class BDBMessageStore extends AbstractBDBMessageStore
     }
 
     @Override
-    public void openMessageStore(final ConfiguredObject<?> parent)
+    protected void doOpen(final ConfiguredObject<?> parent)
     {
-        if (_messageStoreOpen.compareAndSet(false, true))
-        {
-            _parent = parent;
-
-            final SizeMonitoringSettings sizeMonitorSettings = (SizeMonitoringSettings) parent;
-            _persistentSizeHighThreshold = sizeMonitorSettings.getStoreOverfullSize();
-            _persistentSizeLowThreshold = sizeMonitorSettings.getStoreUnderfullSize();
-
-            if (_persistentSizeLowThreshold > _persistentSizeHighThreshold || _persistentSizeLowThreshold < 0l)
-            {
-                _persistentSizeLowThreshold = _persistentSizeHighThreshold;
-            }
-
-            _environmentFacade = _environmentFacadeFactory.createEnvironmentFacade(parent);
-        }
+        _environmentFacade = _environmentFacadeFactory.createEnvironmentFacade(parent);
     }
 
     @Override
-    public void closeMessageStore()
+    protected void doClose()
     {
-        super.closeMessageStore();
-        if (_messageStoreOpen.compareAndSet(true, false))
+        if (_environmentFacade != null)
         {
-            if (_environmentFacade != null)
+            try
             {
-                try
-                {
-                    _environmentFacade.close();
-                    _environmentFacade = null;
-                }
-                catch (RuntimeException e)
-                {
-                    throw new StoreException("Exception occurred on message store close", e);
-                }
+                _environmentFacade.close();
+                _environmentFacade = null;
+            }
+            catch (RuntimeException e)
+            {
+                throw new StoreException("Exception occurred on message store close", e);
             }
         }
     }
@@ -104,6 +79,11 @@ public class BDBMessageStore extends AbstractBDBMessageStore
     @Override
     public void onDelete(ConfiguredObject<?> parent)
     {
+        if (isMessageStoreOpen())
+        {
+            throw new IllegalStateException("Cannot delete the store as store is still open");
+        }
+
         FileBasedSettings fileBasedSettings = (FileBasedSettings)parent;
         String storePath = fileBasedSettings.getStorePath();
 
@@ -111,13 +91,13 @@ public class BDBMessageStore extends AbstractBDBMessageStore
         {
             if (LOGGER.isDebugEnabled())
             {
-                LOGGER.debug("Deleting store " + storePath);
+                LOGGER.debug("Deleting store : {}", storePath);
             }
 
             File configFile = new File(storePath);
             if (!FileUtils.delete(configFile, true))
             {
-                LOGGER.info("Failed to delete the store at location " + storePath);
+                LOGGER.info("Failed to delete the store at location : {} ", storePath);
             }
         }
     }
@@ -129,31 +109,11 @@ public class BDBMessageStore extends AbstractBDBMessageStore
     }
 
     @Override
-    protected long getPersistentSizeLowThreshold()
-    {
-        return _persistentSizeLowThreshold;
-    }
-
-    @Override
-    protected long getPersistentSizeHighThreshold()
-    {
-        return _persistentSizeHighThreshold;
-    }
-
-    @Override
     protected Logger getLogger()
     {
         return LOGGER;
     }
 
-    @Override
-    protected void checkMessageStoreOpen()
-    {
-        if (!_messageStoreOpen.get())
-        {
-            throw new IllegalStateException("Message store is not open");
-        }
-    }
 
     @Override
     protected ConfiguredObject<?> getParent()

http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/e8efe562/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/store/derby/DerbyConfigurationStore.java
----------------------------------------------------------------------
diff --git a/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/store/derby/DerbyConfigurationStore.java b/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/store/derby/DerbyConfigurationStore.java
index ee6c8a2..222306a 100644
--- a/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/store/derby/DerbyConfigurationStore.java
+++ b/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/store/derby/DerbyConfigurationStore.java
@@ -54,7 +54,7 @@ public class DerbyConfigurationStore extends AbstractJDBCConfigurationStore
     private static final Logger LOGGER = LoggerFactory.getLogger(DerbyConfigurationStore.class);
 
 
-    private final ProvidedMessageStore _providedMessageStore = new ProvidedMessageStore();
+    private final ProvidedDerbyMessageStore _providedMessageStore = new ProvidedDerbyMessageStore();
     private final ProvidedPreferenceStore _providedPreferenceStore = new ProvidedPreferenceStore();
 
     private String _connectionURL;
@@ -197,7 +197,7 @@ public class DerbyConfigurationStore extends AbstractJDBCConfigurationStore
         return LOGGER;
     }
 
-    private class ProvidedMessageStore extends AbstractDerbyMessageStore
+    private class ProvidedDerbyMessageStore extends AbstractDerbyMessageStore
     {
         @Override
         protected void doOpen(final ConfiguredObject<?> parent)
@@ -233,6 +233,11 @@ public class DerbyConfigurationStore extends AbstractJDBCConfigurationStore
         @Override
         public void onDelete(final ConfiguredObject<?> parent)
         {
+            if (isMessageStoreOpen())
+            {
+                throw new IllegalStateException("Cannot delete the store as store is still open");
+            }
+
             try(Connection connection = DerbyConfigurationStore.this.getConnection())
             {
                 onDelete(connection);

http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/e8efe562/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/store/derby/DerbyMessageStore.java
----------------------------------------------------------------------
diff --git a/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/store/derby/DerbyMessageStore.java b/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/store/derby/DerbyMessageStore.java
index 43b38da..a56cf2a 100644
--- a/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/store/derby/DerbyMessageStore.java
+++ b/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/store/derby/DerbyMessageStore.java
@@ -76,7 +76,7 @@ public class DerbyMessageStore extends AbstractDerbyMessageStore
     {
         if (isMessageStoreOpen())
         {
-            throw new IllegalStateException("Cannot delete the store as the provided message store is still open");
+            throw new IllegalStateException("Cannot delete the store as store is still open");
         }
 
         FileBasedSettings fileBasedSettings = (FileBasedSettings)parent;
@@ -84,12 +84,12 @@ public class DerbyMessageStore extends AbstractDerbyMessageStore
 
         if (storePath != null)
         {
-            LOGGER.debug("Deleting store {}", storePath);
+            LOGGER.debug("Deleting store : {}", storePath);
 
             File configFile = new File(storePath);
             if (!FileUtils.delete(configFile, true))
             {
-                LOGGER.info("Failed to delete the store at location " + storePath);
+                LOGGER.info("Failed to delete the store at location : {}", storePath);
             }
         }
     }

http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/e8efe562/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/GenericJDBCConfigurationStore.java
----------------------------------------------------------------------
diff --git a/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/GenericJDBCConfigurationStore.java b/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/GenericJDBCConfigurationStore.java
index af378e7..e2a67be 100644
--- a/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/GenericJDBCConfigurationStore.java
+++ b/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/GenericJDBCConfigurationStore.java
@@ -50,7 +50,7 @@ public class GenericJDBCConfigurationStore extends AbstractJDBCConfigurationStor
 
     private static final Logger LOGGER = LoggerFactory.getLogger(GenericJDBCConfigurationStore.class);
 
-    private final MessageStore _providedMessageStore = new ProvidedMessageStore();
+    private final MessageStore _providedMessageStore = new ProvidedJDBCMessageStore();
     private final ProvidedPreferenceStore _providedPreferenceStore = new ProvidedPreferenceStore();
     private String _connectionURL;
     private ConnectionProvider _connectionProvider;
@@ -229,7 +229,7 @@ public class GenericJDBCConfigurationStore extends AbstractJDBCConfigurationStor
         return _providedPreferenceStore;
     }
 
-    private class ProvidedMessageStore extends GenericAbstractJDBCMessageStore
+    private class ProvidedJDBCMessageStore extends GenericAbstractJDBCMessageStore
     {
         @Override
         protected String getTablePrefix(final ConfiguredObject<?> parent)
@@ -270,6 +270,11 @@ public class GenericJDBCConfigurationStore extends AbstractJDBCConfigurationStor
         @Override
         public void onDelete(final ConfiguredObject<?> parent)
         {
+            if (isMessageStoreOpen())
+            {
+                throw new IllegalStateException("Cannot delete the store as the provided store is still open");
+            }
+
             try(Connection connection = GenericJDBCConfigurationStore.this.getConnection())
             {
                 onDelete(connection);

http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/e8efe562/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/GenericJDBCMessageStore.java
----------------------------------------------------------------------
diff --git a/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/GenericJDBCMessageStore.java b/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/GenericJDBCMessageStore.java
index 422b5df..9b13da3 100644
--- a/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/GenericJDBCMessageStore.java
+++ b/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/GenericJDBCMessageStore.java
@@ -161,7 +161,7 @@ public class GenericJDBCMessageStore extends GenericAbstractJDBCMessageStore
     {
         if (isMessageStoreOpen())
         {
-            throw new IllegalStateException("Cannot delete the store as the provided message store is still open");
+            throw new IllegalStateException("Cannot delete the store as the store is still open");
         }
 
         ConnectionProvider connectionProvider = JdbcUtils.createConnectionProvider(parent, LOGGER);


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org