From 6b7572c57dd663f7b3e21746272a9c04f413c8d1 Mon Sep 17 00:00:00 2001 From: "Stephen D. Huston" Date: Thu, 21 Oct 2010 23:09:00 +0000 Subject: 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 --- cpp/src/qpid/store/MessageStorePlugin.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'cpp/src/qpid/store/MessageStorePlugin.cpp') 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(&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 + // . 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(); -- cgit v1.2.1