diff options
| author | Keith Wall <kwall@apache.org> | 2014-06-06 15:43:49 +0000 |
|---|---|---|
| committer | Keith Wall <kwall@apache.org> | 2014-06-06 15:43:49 +0000 |
| commit | 386c80ed77f3d91903c563e0727dbf2a1b09fc2b (patch) | |
| tree | da4468c2c4f24a487547b3b719ecab0d6ea5b0c2 /qpid/java/broker-core/src | |
| parent | 217f1785cf7def05e296990cde21f9cc74d05022 (diff) | |
| download | qpid-python-386c80ed77f3d91903c563e0727dbf2a1b09fc2b.tar.gz | |
QPID-5801: [Java Broker] Elimination of the BDB facade's initialisation tasks
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1600934 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java/broker-core/src')
13 files changed, 95 insertions, 14 deletions
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/store/ManagementModeStoreHandler.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/store/ManagementModeStoreHandler.java index 3d32d483db..d5bbd51fe1 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/store/ManagementModeStoreHandler.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/store/ManagementModeStoreHandler.java @@ -180,6 +180,12 @@ public class ManagementModeStoreHandler implements DurableConfigurationStore } @Override + public void upgradeStoreStructure() throws StoreException + { + _store.upgradeStoreStructure(); + } + + @Override public void visitConfiguredObjectRecords(final ConfiguredObjectRecordHandler recoveryHandler) throws StoreException { diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/store/MemoryConfigurationEntryStore.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/store/MemoryConfigurationEntryStore.java index dab8e8e20f..d95d58a9cf 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/store/MemoryConfigurationEntryStore.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/store/MemoryConfigurationEntryStore.java @@ -344,20 +344,25 @@ public class MemoryConfigurationEntryStore implements ConfigurationEntryStore } @Override - public void closeConfigurationStore() throws StoreException + public void openConfigurationStore(final ConfiguredObject<?> parent, final Map<String, Object> storeSettings) + throws StoreException { + _parent = parent; } @Override - public void onDelete() + public void upgradeStoreStructure() throws StoreException { } @Override - public void openConfigurationStore(final ConfiguredObject<?> parent, final Map<String, Object> storeSettings) - throws StoreException + public void closeConfigurationStore() throws StoreException + { + } + + @Override + public void onDelete() { - _parent = parent; } @Override 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 79c2c274ee..24563bae61 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 @@ -690,6 +690,13 @@ abstract public class AbstractJDBCMessageStore implements MessageStoreProvider, abstract protected String getSqlBigIntType(); + @Override + public void upgradeStoreStructure() throws StoreException + { + // TODO acquire connection to the database using the attribute of the parents, + // run the upgrader in a transaction, close the connection. + } + protected void createOrOpenMessageStoreDatabase() throws SQLException { Connection conn = newAutoCommitConnection(); diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/AbstractMemoryStore.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/AbstractMemoryStore.java index 1c92e491c3..48608dde4f 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/AbstractMemoryStore.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/AbstractMemoryStore.java @@ -73,16 +73,23 @@ abstract class AbstractMemoryStore implements DurableConfigurationStore, Message } @Override - public void closeConfigurationStore() + public void openConfigurationStore(ConfiguredObject<?> parent, Map<String, Object> storeSettings) { - _configuredObjectRecords.clear(); } @Override - public void openConfigurationStore(ConfiguredObject<?> parent, Map<String, Object> storeSettings) + public void upgradeStoreStructure() throws StoreException + { + + } + + @Override + public void closeConfigurationStore() { + _configuredObjectRecords.clear(); } + @Override public void visitConfiguredObjectRecords(ConfiguredObjectRecordHandler handler) throws StoreException { diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/DurableConfigurationStore.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/DurableConfigurationStore.java index 94de6c30c3..e353b55e68 100755 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/DurableConfigurationStore.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/DurableConfigurationStore.java @@ -32,8 +32,7 @@ public interface DurableConfigurationStore String STORE_PATH = "storePath"; /** - * Called after instantiation in order to configure the message store. A particular implementation can define - * whatever parameters it wants. + * Initializes and opens the configuration store. * * @param parent * @param storeSettings store settings @@ -41,6 +40,16 @@ public interface DurableConfigurationStore void openConfigurationStore(ConfiguredObject<?> parent, Map<String, Object> storeSettings) throws StoreException; /** + * Requests that the store performs any upgrade work on the store's structure. If there is no + * upgrade work to be done, this method should return without doing anything. + * + * @throws StoreException signals that a problem was encountered trying to upgrade the store. + * Implementations, on encountering a problem, should endeavour to leave the store in its + * original state. + */ + void upgradeStoreStructure() throws StoreException; + + /** * Visit all configured object records with given handler. * * @param handler a handler to invoke on each configured object record diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/JsonFileConfigStore.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/JsonFileConfigStore.java index ba42c45207..afb2179b9b 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/JsonFileConfigStore.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/JsonFileConfigStore.java @@ -106,6 +106,12 @@ public class JsonFileConfigStore implements DurableConfigurationStore } @Override + public void upgradeStoreStructure() throws StoreException + { + // No-op for Json + } + + @Override public void openConfigurationStore(ConfiguredObject<?> parent, Map<String, Object> storeSettings) { _parent = parent; diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/MemoryMessageStore.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/MemoryMessageStore.java index 44d640ca86..f4ad308a2e 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/MemoryMessageStore.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/MemoryMessageStore.java @@ -184,6 +184,12 @@ public class MemoryMessageStore implements MessageStore } @Override + public void upgradeStoreStructure() throws StoreException + { + + } + + @Override public <T extends StorableMessageMetaData> StoredMessage<T> addMessage(final T metaData) { long id = _messageId.getAndIncrement(); diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/MessageStore.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/MessageStore.java index b1ddaabda8..e82f9dbbb0 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/MessageStore.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/MessageStore.java @@ -43,13 +43,23 @@ public interface MessageStore 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. - * @param parent virtual host name + * Initializes and opens the message store. + * + * @param parent parent object * @param messageStoreSettings store settings */ void openMessageStore(ConfiguredObject<?> parent, Map<String, Object> messageStoreSettings); + /** + * Requests that the store performs any upgrade work on the store's structure. If there is no + * upgrade work to be done, this method should return without doing anything. + * + * @throws StoreException signals that a problem was encountered trying to upgrade the store. + * Implementations, on encountering a problem, should endeavour to leave the store in its + * original state. + */ + void upgradeStoreStructure() throws StoreException; + void visitMessages(MessageHandler handler) throws StoreException; void visitMessageInstances(MessageInstanceHandler handler) throws StoreException; diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/NullMessageStore.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/NullMessageStore.java index a3ed4bea05..a929198af6 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/NullMessageStore.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/NullMessageStore.java @@ -63,6 +63,12 @@ public abstract class NullMessageStore implements MessageStore, DurableConfigura } @Override + public void upgradeStoreStructure() throws StoreException + { + + } + + @Override public void closeMessageStore() { } diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java index 9e10d5e424..5af88f9b94 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java @@ -1368,6 +1368,8 @@ public abstract class AbstractVirtualHost<X extends AbstractVirtualHost<X>> exte getEventLogger().message(getMessageStoreLogSubject(), MessageStoreMessages.STORE_LOCATION(messageStore.getStoreLocation())); } + messageStore.upgradeStoreStructure(); + if (isStoreEmpty()) { createDefaultExchanges(); diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/AbstractStandardVirtualHostNode.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/AbstractStandardVirtualHostNode.java index 62c05991c5..f91ab44792 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/AbstractStandardVirtualHostNode.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/AbstractStandardVirtualHostNode.java @@ -99,6 +99,7 @@ public abstract class AbstractStandardVirtualHostNode<X extends AbstractStandard Map<String, Object> attributes = buildAttributesForStore(); getConfigurationStore().openConfigurationStore(this, attributes); + getConfigurationStore().upgradeStoreStructure(); getEventLogger().message(getConfigurationStoreLogSubject(), ConfigStoreMessages.CREATED()); diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/BrokerStoreUpgraderAndRecovererTest.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/BrokerStoreUpgraderAndRecovererTest.java index c6fa815c82..7d37363c81 100644 --- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/BrokerStoreUpgraderAndRecovererTest.java +++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/BrokerStoreUpgraderAndRecovererTest.java @@ -256,6 +256,12 @@ public class BrokerStoreUpgraderAndRecovererTest extends QpidTestCase } @Override + public void upgradeStoreStructure() throws StoreException + { + + } + + @Override public void create(ConfiguredObjectRecord object) throws StoreException { } diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/MessageStoreTestCase.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/MessageStoreTestCase.java index 8bf981bd7b..c0968794f5 100644 --- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/MessageStoreTestCase.java +++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/MessageStoreTestCase.java @@ -42,6 +42,8 @@ import org.apache.qpid.server.store.handler.DistributedTransactionHandler; import org.apache.qpid.server.store.handler.MessageHandler; import org.apache.qpid.server.store.handler.MessageInstanceHandler; import org.apache.qpid.test.utils.QpidTestCase; + +import org.hamcrest.Description; import org.mockito.ArgumentMatcher; public abstract class MessageStoreTestCase extends QpidTestCase @@ -163,7 +165,7 @@ public abstract class MessageStoreTestCase extends QpidTestCase StoreFuture flushFuture = message.flushToStore(); flushFuture.waitForCompletion(); - assertEquals("Unexpected message id", 4, message.getMessageNumber()); + assertTrue("Unexpected message id " + message.getMessageNumber(), message.getMessageNumber() >= 4); } public void testVisitMessageInstances() throws Exception @@ -412,6 +414,14 @@ public abstract class MessageStoreTestCase extends QpidTestCase { return obj instanceof StoredMessage && ((StoredMessage<?>)obj).getMessageNumber() == _messageNumber; } + + @Override + public void describeTo(final Description description) + { + description.appendText("Expected messageNumber:"); + description.appendValue(_messageNumber); + } + } private class QueueFilteringMessageInstanceHandler implements MessageInstanceHandler |
