Author: kwall
Date: Fri Jun 6 15:43:18 2014
New Revision: 1600932
URL: http://svn.apache.org/r1600932
Log:
QPID-5800: [Java Broker] Add DurableConfigurationStore#onDelete method to allow
an implementation to
delete the files/tables/databases underlying the store.
Modified:
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/store/ManagementModeStoreHandler.java
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/store/MemoryConfigurationEntryStore.java
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/AbstractJDBCMessageStore.java
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/AbstractMemoryStore.java
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/DurableConfigurationStore.java
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/JsonFileConfigStore.java
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/MessageStore.java
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/AbstractVirtualHostNode.java
qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/BrokerStoreUpgraderAndRecovererTest.java
qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/JsonFileConfigStoreTest.java
Modified:
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/store/ManagementModeStoreHandler.java
URL:
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/store/ManagementModeStoreHandler.java?rev=1600932&r1=1600931&r2=1600932&view=diff
==============================================================================
---
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/store/ManagementModeStoreHandler.java
(original)
+++
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/store/ManagementModeStoreHandler.java
Fri Jun 6 15:43:18 2014
@@ -242,6 +242,10 @@ public class ManagementModeStoreHandler
{
}
+ @Override
+ public void onDelete()
+ {
+ }
@Override
public synchronized UUID[] remove(final ConfiguredObjectRecord... records)
Modified:
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/store/MemoryConfigurationEntryStore.java
URL:
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/store/MemoryConfigurationEntryStore.java?rev=1600932&r1=1600931&r2=1600932&view=diff
==============================================================================
---
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/store/MemoryConfigurationEntryStore.java
(original)
+++
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/store/MemoryConfigurationEntryStore.java
Fri Jun 6 15:43:18 2014
@@ -349,6 +349,11 @@ public class MemoryConfigurationEntrySto
}
@Override
+ public void onDelete()
+ {
+ }
+
+ @Override
public void openConfigurationStore(final ConfiguredObject<?> parent, final
Map<String, Object> storeSettings)
throws StoreException
{
Modified:
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/AbstractJDBCMessageStore.java
URL:
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/AbstractJDBCMessageStore.java?rev=1600932&r1=1600931&r2=1600932&view=diff
==============================================================================
---
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/AbstractJDBCMessageStore.java
(original)
+++
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/AbstractJDBCMessageStore.java
Fri Jun 6 15:43:18 2014
@@ -2439,6 +2439,7 @@ abstract public class AbstractJDBCMessag
protected abstract void storedSizeChange(int storeSizeIncrease);
+ @Override
public void onDelete()
{
// TODO should probably check we are closed
Modified:
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/AbstractMemoryStore.java
URL:
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/AbstractMemoryStore.java?rev=1600932&r1=1600931&r2=1600932&view=diff
==============================================================================
---
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/AbstractMemoryStore.java
(original)
+++
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/AbstractMemoryStore.java
Fri Jun 6 15:43:18 2014
@@ -36,8 +36,6 @@ abstract class AbstractMemoryStore imple
private final ConcurrentHashMap<UUID, ConfiguredObjectRecord>
_configuredObjectRecords = new ConcurrentHashMap<UUID,
ConfiguredObjectRecord>();
-
-
@Override
public void create(ConfiguredObjectRecord record)
{
@@ -105,5 +103,9 @@ abstract class AbstractMemoryStore imple
return _messageStore;
}
+ @Override
+ public void onDelete()
+ {
+ }
}
Modified:
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/DurableConfigurationStore.java
URL:
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/DurableConfigurationStore.java?rev=1600932&r1=1600931&r2=1600932&view=diff
==============================================================================
---
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/DurableConfigurationStore.java
(original)
+++
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/DurableConfigurationStore.java
Fri Jun 6 15:43:18 2014
@@ -41,23 +41,21 @@ public interface DurableConfigurationSto
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 DurableConfigurationSto
*/
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();
}
Modified:
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/JsonFileConfigStore.java
URL:
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/JsonFileConfigStore.java?rev=1600932&r1=1600931&r2=1600932&view=diff
==============================================================================
---
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/JsonFileConfigStore.java
(original)
+++
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/JsonFileConfigStore.java
Fri Jun 6 15:43:18 2014
@@ -571,6 +571,17 @@ public class JsonFileConfigStore impleme
}
+ @Override
+ public void onDelete()
+ {
+ if (_configFileName != null && _backupFileName != null)
+ {
+ renameFile(_configFileName,_backupFileName);
+ _configFileName = null;
+ _backupFileName = null;
+ }
+ }
+
private void releaseFileLock() throws IOException
{
_fileLock.release();
Modified:
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/MessageStore.java
URL:
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/MessageStore.java?rev=1600932&r1=1600931&r2=1600932&view=diff
==============================================================================
---
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/MessageStore.java
(original)
+++
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/MessageStore.java
Fri Jun 6 15:43:18 2014
@@ -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;
-
}
Modified:
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/AbstractVirtualHostNode.java
URL:
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/AbstractVirtualHostNode.java?rev=1600932&r1=1600931&r2=1600932&view=diff
==============================================================================
---
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/AbstractVirtualHostNode.java
(original)
+++
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/AbstractVirtualHostNode.java
Fri Jun 6 15:43:18 2014
@@ -199,10 +199,7 @@ public abstract class AbstractVirtualHos
deleteVirtualHostIfExists();
close();
deleted();
- if (getConfigurationStore() instanceof MessageStoreProvider)
- {
-
((MessageStoreProvider)getConfigurationStore()).getMessageStore().onDelete();
- }
+ getConfigurationStore().onDelete();
}
protected void deleteVirtualHostIfExists()
Modified:
qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/BrokerStoreUpgraderAndRecovererTest.java
URL:
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/BrokerStoreUpgraderAndRecovererTest.java?rev=1600932&r1=1600931&r2=1600932&view=diff
==============================================================================
---
qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/BrokerStoreUpgraderAndRecovererTest.java
(original)
+++
qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/BrokerStoreUpgraderAndRecovererTest.java
Fri Jun 6 15:43:18 2014
@@ -277,6 +277,11 @@ public class BrokerStoreUpgraderAndRecov
}
@Override
+ public void onDelete()
+ {
+ }
+
+ @Override
public void visitConfiguredObjectRecords(ConfiguredObjectRecordHandler
handler) throws StoreException
{
handler.begin();
Modified:
qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/JsonFileConfigStoreTest.java
URL:
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/JsonFileConfigStoreTest.java?rev=1600932&r1=1600931&r2=1600932&view=diff
==============================================================================
---
qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/JsonFileConfigStoreTest.java
(original)
+++
qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/JsonFileConfigStoreTest.java
Fri Jun 6 15:43:18 2014
@@ -298,7 +298,25 @@ public class JsonFileConfigStoreTest ext
}
_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());
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]