summaryrefslogtreecommitdiff
path: root/qpid/java/broker-core/src
diff options
context:
space:
mode:
authorKeith Wall <kwall@apache.org>2014-06-06 15:43:49 +0000
committerKeith Wall <kwall@apache.org>2014-06-06 15:43:49 +0000
commit386c80ed77f3d91903c563e0727dbf2a1b09fc2b (patch)
treeda4468c2c4f24a487547b3b719ecab0d6ea5b0c2 /qpid/java/broker-core/src
parent217f1785cf7def05e296990cde21f9cc74d05022 (diff)
downloadqpid-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')
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/store/ManagementModeStoreHandler.java6
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/store/MemoryConfigurationEntryStore.java15
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/AbstractJDBCMessageStore.java7
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/AbstractMemoryStore.java13
-rwxr-xr-xqpid/java/broker-core/src/main/java/org/apache/qpid/server/store/DurableConfigurationStore.java13
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/JsonFileConfigStore.java6
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/MemoryMessageStore.java6
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/MessageStore.java16
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/NullMessageStore.java6
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java2
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/AbstractStandardVirtualHostNode.java1
-rw-r--r--qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/BrokerStoreUpgraderAndRecovererTest.java6
-rw-r--r--qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/MessageStoreTestCase.java12
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