summaryrefslogtreecommitdiff
path: root/cpp/src/qpid/store/MessageStorePlugin.cpp
diff options
context:
space:
mode:
authorStephen D. Huston <shuston@apache.org>2010-10-21 23:09:00 +0000
committerStephen D. Huston <shuston@apache.org>2010-10-21 23:09:00 +0000
commit6b7572c57dd663f7b3e21746272a9c04f413c8d1 (patch)
treee13c2dfe341dcaf90c5edf067313ee0098357186 /cpp/src/qpid/store/MessageStorePlugin.cpp
parent7ecaee585691df73928e3bb2248d8977372d1041 (diff)
downloadqpid-python-6b7572c57dd663f7b3e21746272a9c04f413c8d1.tar.gz
Add hybrid SQL-CLFS store that can be used on Windows systems Vista, Win Server 2008 and up - these have the Common Log File System facility. The CLFS store uses CLFS to store/recover messages and transactions instead of SQL. SQL still holds queues, bindings, exchanges, configs.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@1026175 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/qpid/store/MessageStorePlugin.cpp')
-rw-r--r--cpp/src/qpid/store/MessageStorePlugin.cpp12
1 files changed, 9 insertions, 3 deletions
diff --git a/cpp/src/qpid/store/MessageStorePlugin.cpp b/cpp/src/qpid/store/MessageStorePlugin.cpp
index f85787d1a3..2a8d971987 100644
--- a/cpp/src/qpid/store/MessageStorePlugin.cpp
+++ b/cpp/src/qpid/store/MessageStorePlugin.cpp
@@ -61,11 +61,13 @@ MessageStorePlugin::StoreOptions::StoreOptions(const std::string& name) :
void
MessageStorePlugin::earlyInitialize (qpid::Plugin::Target& target)
{
- qpid::broker::Broker* broker =
+ qpid::broker::Broker* b =
dynamic_cast<qpid::broker::Broker*>(&target);
- if (0 == broker)
+ if (0 == b)
return; // Only listen to Broker targets
+ broker = b;
+
// See if there are any storage provider plugins ready. If not, we can't
// do a message store.
qpid::Plugin::earlyInitAll(*this);
@@ -412,8 +414,12 @@ MessageStorePlugin::recover(broker::RecoveryManager& recoverer)
provider->second->recoverExchanges(recoverer, exchanges);
provider->second->recoverQueues(recoverer, queues);
provider->second->recoverBindings(recoverer, exchanges, queues);
- provider->second->recoverTransactions(recoverer, dtxMap);
+ // Important to recover messages before transactions in the SQL-CLFS
+ // case. If this becomes a problem, it may be possible to resolve it.
+ // If in doubt please raise a jira and notify Steve Huston
+ // <shuston@riverace.com>.
provider->second->recoverMessages(recoverer, messages, messageQueueMap);
+ provider->second->recoverTransactions(recoverer, dtxMap);
// Enqueue msgs where needed.
for (MessageQueueMap::const_iterator i = messageQueueMap.begin();
i != messageQueueMap.end();