summaryrefslogtreecommitdiff
path: root/cpp/src/qpid/store/MessageStorePlugin.cpp
diff options
context:
space:
mode:
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();