summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKenneth Anthony Giusti <kgiusti@apache.org>2010-09-30 13:06:06 +0000
committerKenneth Anthony Giusti <kgiusti@apache.org>2010-09-30 13:06:06 +0000
commit82688abb12c80190f208a7455a2e306329f4bc92 (patch)
treedb74daa65fd1167401f1187d6eea027d3fe0eb8d
parentf8156eefde27d082fc267dfcce9e061b75611508 (diff)
downloadqpid-python-82688abb12c80190f208a7455a2e306329f4bc92.tar.gz
QPID-2888: qmf v2 agent will republish all data on broker reconnect.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1003052 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--qpid/cpp/src/qpid/agent/ManagementAgentImpl.cpp14
-rw-r--r--qpid/cpp/src/qpid/agent/ManagementAgentImpl.h2
2 files changed, 10 insertions, 6 deletions
diff --git a/qpid/cpp/src/qpid/agent/ManagementAgentImpl.cpp b/qpid/cpp/src/qpid/agent/ManagementAgentImpl.cpp
index a015bcaba0..b3f1d57a9a 100644
--- a/qpid/cpp/src/qpid/agent/ManagementAgentImpl.cpp
+++ b/qpid/cpp/src/qpid/agent/ManagementAgentImpl.cpp
@@ -104,7 +104,7 @@ ManagementAgentImpl::ManagementAgentImpl() :
initialized(false), connected(false), useMapMsg(false), lastFailure("never connected"),
topicExchange("qmf.default.topic"), directExchange("qmf.default.direct"),
schemaTimestamp(Duration(EPOCH, now())),
- clientWasAdded(true), requestedBrokerBank(0), requestedAgentBank(0),
+ publishAllData(true), requestedBrokerBank(0), requestedAgentBank(0),
assignedBrokerBank(0), assignedAgentBank(0), bootSequence(0),
maxV2ReplyObjs(10), // KAG todo: make this a tuneable parameter
connThreadBody(*this), connThread(connThreadBody),
@@ -399,6 +399,10 @@ void ManagementAgentImpl::setSignalCallback(Notifyable& _notifyable)
void ManagementAgentImpl::startProtocol()
{
sendHeartbeat();
+ {
+ sys::Mutex::ScopedLock lock(agentLock);
+ publishAllData = true;
+ }
}
void ManagementAgentImpl::storeData(bool requested)
@@ -550,7 +554,7 @@ void ManagementAgentImpl::handleSchemaRequest(Buffer& inBuffer, uint32_t sequenc
void ManagementAgentImpl::handleConsoleAddedIndication()
{
sys::Mutex::ScopedLock lock(agentLock);
- clientWasAdded = true;
+ publishAllData = true;
QPID_LOG(trace, "RCVD ConsoleAddedInd");
}
@@ -829,7 +833,7 @@ void ManagementAgentImpl::handleLocateRequest(const string&, const string& cid,
{
sys::Mutex::ScopedLock lock(agentLock);
- clientWasAdded = true;
+ publishAllData = true;
}
}
@@ -1047,12 +1051,12 @@ void ManagementAgentImpl::periodicProcessing()
iter++) {
ManagementObject* object = iter->second.get();
object->setFlags(0);
- if (clientWasAdded) {
+ if (publishAllData) {
object->setForcePublish(true);
}
}
- clientWasAdded = false;
+ publishAllData = false;
//
// Process the entire object map.
diff --git a/qpid/cpp/src/qpid/agent/ManagementAgentImpl.h b/qpid/cpp/src/qpid/agent/ManagementAgentImpl.h
index be90640ec7..59f6c0b99c 100644
--- a/qpid/cpp/src/qpid/agent/ManagementAgentImpl.h
+++ b/qpid/cpp/src/qpid/agent/ManagementAgentImpl.h
@@ -177,7 +177,7 @@ class ManagementAgentImpl : public ManagementAgent, public client::MessageListen
std::string directExchange;
qpid::sys::Duration schemaTimestamp;
- bool clientWasAdded;
+ bool publishAllData;
uint32_t requestedBrokerBank;
uint32_t requestedAgentBank;
uint32_t assignedBrokerBank;