summaryrefslogtreecommitdiff
path: root/java/broker-core/src
diff options
context:
space:
mode:
authorKeith Wall <kwall@apache.org>2014-06-06 15:43:18 +0000
committerKeith Wall <kwall@apache.org>2014-06-06 15:43:18 +0000
commitb28639e2e104347dc48884e2fe739644eeebc432 (patch)
treea140f2550612b721a7e847eecbcd3612c40a12a7 /java/broker-core/src
parent5b85e1a859d3ff7aaa6c3030c9264ed7f4416cf1 (diff)
downloadqpid-python-b28639e2e104347dc48884e2fe739644eeebc432.tar.gz
QPID-5800: [Java Broker] Add DurableConfigurationStore#onDelete method to allow an implementation to
delete the files/tables/databases underlying the store. git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@1600932 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java/broker-core/src')
-rw-r--r--java/broker-core/src/main/java/org/apache/qpid/server/configuration/store/ManagementModeStoreHandler.java4
-rw-r--r--java/broker-core/src/main/java/org/apache/qpid/server/configuration/store/MemoryConfigurationEntryStore.java5
-rw-r--r--java/broker-core/src/main/java/org/apache/qpid/server/store/AbstractJDBCMessageStore.java1
-rw-r--r--java/broker-core/src/main/java/org/apache/qpid/server/store/AbstractMemoryStore.java6
-rwxr-xr-xjava/broker-core/src/main/java/org/apache/qpid/server/store/DurableConfigurationStore.java34
-rw-r--r--java/broker-core/src/main/java/org/apache/qpid/server/store/JsonFileConfigStore.java11
-rw-r--r--java/broker-core/src/main/java/org/apache/qpid/server/store/MessageStore.java21
-rw-r--r--java/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/AbstractVirtualHostNode.java5
-rw-r--r--java/broker-core/src/test/java/org/apache/qpid/server/store/BrokerStoreUpgraderAndRecovererTest.java5
-rw-r--r--java/broker-core/src/test/java/org/apache/qpid/server/store/JsonFileConfigStoreTest.java18
10 files changed, 79 insertions, 31 deletions
diff --git a/java/broker-core/src/main/java/org/apache/qpid/server/configuration/store/ManagementModeStoreHandler.java b/java/broker-core/src/main/java/org/apache/qpid/server/configuration/store/ManagementModeStoreHandler.java
index a17bbbff47..3d32d483db 100644
--- a/java/broker-core/src/main/java/org/apache/qpid/server/configuration/store/ManagementModeStoreHandler.java
+++ b/java/broker-core/src/main/java/org/apache/qpid/server/configuration/store/ManagementModeStoreHandler.java
@@ -242,6 +242,10 @@ public class ManagementModeStoreHandler implements DurableConfigurationStore
{
}
+ @Override
+ public void onDelete()
+ {
+ }
@Override
public synchronized UUID[] remove(final ConfiguredObjectRecord... records)
diff --git a/java/broker-core/src/main/java/org/apache/qpid/server/configuration/store/MemoryConfigurationEntryStore.java b/java/broker-core/src/main/java/org/apache/qpid/server/configuration/store/MemoryConfigurationEntryStore.java
index 14c9e7d3e0..dab8e8e20f 100644
--- a/java/broker-core/src/main/java/org/apache/qpid/server/configuration/store/MemoryConfigurationEntryStore.java
+++ b/java/broker-core/src/main/java/org/apache/qpid/server/configuration/store/MemoryConfigurationEntryStore.java
@@ -349,6 +349,11 @@ public class MemoryConfigurationEntryStore implements ConfigurationEntryStore
}
@Override
+ public void onDelete()
+ {
+ }
+
+ @Override
public void openConfigurationStore(final ConfiguredObject<?> parent, final Map<String, Object> storeSettings)
throws StoreException
{
diff --git a/java/broker-core/src/main/java/org/apache/qpid/server/store/AbstractJDBCMessageStore.java b/java/broker-core/src/main/java/org/apache/qpid/server/store/AbstractJDBCMessageStore.java
index 1db2c89d05..79c2c274ee 100644
--- a/java/broker-core/src/main/java/org/apache/qpid/server/store/AbstractJDBCMessageStore.java
+++ b/java/broker-core/src/main/java/org/apache/qpid/server/store/AbstractJDBCMessageStore.java
@@ -2439,6 +2439,7 @@ abstract public class AbstractJDBCMessageStore implements MessageStoreProvider,
protected abstract void storedSizeChange(int storeSizeIncrease);
+ @Override
public void onDelete()
{
// TODO should probably check we are closed
diff --git a/java/broker-core/src/main/java/org/apache/qpid/server/store/AbstractMemoryStore.java b/java/broker-core/src/main/java/org/apache/qpid/server/store/AbstractMemoryStore.java
index 267e1d9cb3..1c92e491c3 100644
--- a/java/broker-core/src/main/java/org/apache/qpid/server/store/AbstractMemoryStore.java
+++ b/java/broker-core/src/main/java/org/apache/qpid/server/store/AbstractMemoryStore.java
@@ -36,8 +36,6 @@ abstract class AbstractMemoryStore implements DurableConfigurationStore, Message
private final ConcurrentHashMap<UUID, ConfiguredObjectRecord> _configuredObjectRecords = new ConcurrentHashMap<UUID, ConfiguredObjectRecord>();
-
-
@Override
public void create(ConfiguredObjectRecord record)
{
@@ -105,5 +103,9 @@ abstract class AbstractMemoryStore implements DurableConfigurationStore, Message
return _messageStore;
}
+ @Override
+ public void onDelete()
+ {
+ }
}
diff --git a/java/broker-core/src/main/java/org/apache/qpid/server/store/DurableConfigurationStore.java b/java/broker-core/src/main/java/org/apache/qpid/server/store/DurableConfigurationStore.java
index fa109e8749..94de6c30c3 100755
--- a/java/broker-core/src/main/java/org/apache/qpid/server/store/DurableConfigurationStore.java
+++ b/java/broker-core/src/main/java/org/apache/qpid/server/store/DurableConfigurationStore.java
@@ -41,23 +41,21 @@ public interface DurableConfigurationStore
void openConfigurationStore(ConfiguredObject<?> parent, Map<String, Object> storeSettings) throws StoreException;
/**
- * Makes the specified object persistent.
- *
- * @param object The object to persist.
+ * Visit all configured object records with given handler.
*
- * @throws StoreException If the operation fails for any reason.
+ * @param handler a handler to invoke on each configured object record
+ * @throws StoreException
*/
- void create(ConfiguredObjectRecord object) throws StoreException;
+ void visitConfiguredObjectRecords(ConfiguredObjectRecordHandler handler) throws StoreException;
/**
- * Removes the specified persistent configured objects.
+ * Makes the specified object persistent.
*
- * @param objects The objects to remove.
+ * @param object The object to persist.
*
* @throws StoreException If the operation fails for any reason.
*/
- public UUID[] remove(ConfiguredObjectRecord... objects) throws StoreException;
-
+ void create(ConfiguredObjectRecord object) throws StoreException;
/**
* Updates the specified objects in the persistent store, IF it is already present. If the object
@@ -71,13 +69,21 @@ public interface DurableConfigurationStore
*/
void update(boolean createIfNecessary, ConfiguredObjectRecord... records) throws StoreException;
+ /**
+ * Removes the specified persistent configured objects.
+ *
+ * @param objects The objects to remove.
+ *
+ * @throws StoreException If the operation fails for any reason.
+ */
+ public UUID[] remove(ConfiguredObjectRecord... objects) throws StoreException;
+
void closeConfigurationStore() throws StoreException;
/**
- * Visit all configured object records with given handler.
- *
- * @param handler a handler to invoke on each configured object record
- * @throws StoreException
+ * Deletes the configuration store from its underlying storage. If the store
+ * has not be opened, then this call will be ignored. The store should be closed
+ * before making this call.
*/
- void visitConfiguredObjectRecords(ConfiguredObjectRecordHandler handler) throws StoreException;
+ void onDelete();
}
diff --git a/java/broker-core/src/main/java/org/apache/qpid/server/store/JsonFileConfigStore.java b/java/broker-core/src/main/java/org/apache/qpid/server/store/JsonFileConfigStore.java
index 111fc72533..ba42c45207 100644
--- a/java/broker-core/src/main/java/org/apache/qpid/server/store/JsonFileConfigStore.java
+++ b/java/broker-core/src/main/java/org/apache/qpid/server/store/JsonFileConfigStore.java
@@ -571,6 +571,17 @@ public class JsonFileConfigStore implements DurableConfigurationStore
}
+ @Override
+ public void onDelete()
+ {
+ if (_configFileName != null && _backupFileName != null)
+ {
+ renameFile(_configFileName,_backupFileName);
+ _configFileName = null;
+ _backupFileName = null;
+ }
+ }
+
private void releaseFileLock() throws IOException
{
_fileLock.release();
diff --git a/java/broker-core/src/main/java/org/apache/qpid/server/store/MessageStore.java b/java/broker-core/src/main/java/org/apache/qpid/server/store/MessageStore.java
index 4545aa9211..b1ddaabda8 100644
--- a/java/broker-core/src/main/java/org/apache/qpid/server/store/MessageStore.java
+++ b/java/broker-core/src/main/java/org/apache/qpid/server/store/MessageStore.java
@@ -38,6 +38,10 @@ public interface MessageStore
String UNDERFULL_SIZE = "storeUnderfullSize";
String OVERFULL_SIZE = "storeOverfullSize";
+ String getStoreLocation();
+
+ void addEventListener(EventListener eventListener, Event... events);
+
/**
* Called after instantiation in order to open and initialize the message store. A particular implementation can define
* whatever parameters it wants.
@@ -46,8 +50,13 @@ public interface MessageStore
*/
void openMessageStore(ConfiguredObject<?> parent, Map<String, Object> messageStoreSettings);
- public <T extends StorableMessageMetaData> StoredMessage<T> addMessage(T metaData);
+ void visitMessages(MessageHandler handler) throws StoreException;
+
+ void visitMessageInstances(MessageInstanceHandler handler) throws StoreException;
+
+ void visitDistributedTransactions(DistributedTransactionHandler handler) throws StoreException;
+ <T extends StorableMessageMetaData> StoredMessage<T> addMessage(T metaData);
/**
* Is this store capable of persisting the data
@@ -63,15 +72,5 @@ public interface MessageStore
*/
void closeMessageStore();
- void addEventListener(EventListener eventListener, Event... events);
-
- String getStoreLocation();
-
- // TODO change to have separate delete methods for configuration and message store.
void onDelete();
-
- void visitMessages(MessageHandler handler) throws StoreException;
- void visitMessageInstances(MessageInstanceHandler handler) throws StoreException;
- void visitDistributedTransactions(DistributedTransactionHandler handler) throws StoreException;
-
}
diff --git a/java/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/AbstractVirtualHostNode.java b/java/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/AbstractVirtualHostNode.java
index c87d24f9c6..d73e4ae87b 100644
--- a/java/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/AbstractVirtualHostNode.java
+++ b/java/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/AbstractVirtualHostNode.java
@@ -199,10 +199,7 @@ public abstract class AbstractVirtualHostNode<X extends AbstractVirtualHostNode<
deleteVirtualHostIfExists();
close();
deleted();
- if (getConfigurationStore() instanceof MessageStoreProvider)
- {
- ((MessageStoreProvider)getConfigurationStore()).getMessageStore().onDelete();
- }
+ getConfigurationStore().onDelete();
}
protected void deleteVirtualHostIfExists()
diff --git a/java/broker-core/src/test/java/org/apache/qpid/server/store/BrokerStoreUpgraderAndRecovererTest.java b/java/broker-core/src/test/java/org/apache/qpid/server/store/BrokerStoreUpgraderAndRecovererTest.java
index 006c96a92a..c6fa815c82 100644
--- a/java/broker-core/src/test/java/org/apache/qpid/server/store/BrokerStoreUpgraderAndRecovererTest.java
+++ b/java/broker-core/src/test/java/org/apache/qpid/server/store/BrokerStoreUpgraderAndRecovererTest.java
@@ -277,6 +277,11 @@ public class BrokerStoreUpgraderAndRecovererTest extends QpidTestCase
}
@Override
+ public void onDelete()
+ {
+ }
+
+ @Override
public void visitConfiguredObjectRecords(ConfiguredObjectRecordHandler handler) throws StoreException
{
handler.begin();
diff --git a/java/broker-core/src/test/java/org/apache/qpid/server/store/JsonFileConfigStoreTest.java b/java/broker-core/src/test/java/org/apache/qpid/server/store/JsonFileConfigStoreTest.java
index 67161370de..6012b1802d 100644
--- a/java/broker-core/src/test/java/org/apache/qpid/server/store/JsonFileConfigStoreTest.java
+++ b/java/broker-core/src/test/java/org/apache/qpid/server/store/JsonFileConfigStoreTest.java
@@ -298,7 +298,25 @@ public class JsonFileConfigStoreTest extends QpidTestCase
}
_store.closeConfigurationStore();
secondStore.openConfigurationStore(_parent, _configurationStoreSettings);
+ }
+
+ public void testStoreFileLifecycle()
+ {
+ File expectedJsonFile = new File(_storeLocation, _parent.getName() + ".json");
+ File expectedJsonFileBak = new File(_storeLocation, _parent.getName() + ".bak");
+
+ assertFalse("JSON store should not exist", expectedJsonFile.exists());
+ assertFalse("JSON backup should not exist", expectedJsonFileBak.exists());
+
+ _store.openConfigurationStore(_parent, _configurationStoreSettings);
+ assertTrue("JSON store should exist after open", expectedJsonFile.exists());
+ assertFalse("JSON backup should not exist after open", expectedJsonFileBak.exists());
+
+ _store.closeConfigurationStore();
+ assertTrue("JSON store should exist after close", expectedJsonFile.exists());
+ _store.onDelete();
+ assertFalse("JSON store should not exist after delete", expectedJsonFile.exists());
}