You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by tr...@apache.org on 2011/02/04 03:38:11 UTC
svn commit: r1067067 - /qpid/trunk/qpid/cpp/src/qmf/ConsoleSession.cpp
Author: tross
Date: Fri Feb 4 02:38:10 2011
New Revision: 1067067
URL: http://svn.apache.org/viewvc?rev=1067067&view=rev
Log:
Prevent spurious "schema-updated" notifications when an agent restarts.
Modified:
qpid/trunk/qpid/cpp/src/qmf/ConsoleSession.cpp
Modified: qpid/trunk/qpid/cpp/src/qmf/ConsoleSession.cpp
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qmf/ConsoleSession.cpp?rev=1067067&r1=1067066&r2=1067067&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qmf/ConsoleSession.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qmf/ConsoleSession.cpp Fri Feb 4 02:38:10 2011
@@ -481,6 +481,7 @@ void ConsoleSessionImpl::handleAgentUpda
//
// This is a refresh of an agent we are already tracking.
//
+ bool detectedRestart(false);
agent = aIter->second;
AgentImpl& impl(AgentImplAccess::get(agent));
impl.touch();
@@ -493,6 +494,7 @@ void ConsoleSessionImpl::handleAgentUpda
auto_ptr<ConsoleEventImpl> eventImpl(new ConsoleEventImpl(CONSOLE_AGENT_RESTART));
eventImpl->setAgent(agent);
enqueueEventLH(ConsoleEvent(eventImpl.release()));
+ detectedRestart = true;
}
iter = attrs.find(protocol::AGENT_ATTR_SCHEMA_UPDATED_TIMESTAMP);
@@ -501,12 +503,14 @@ void ConsoleSessionImpl::handleAgentUpda
if (ts > impl.getAttribute(protocol::AGENT_ATTR_SCHEMA_UPDATED_TIMESTAMP).asUint64()) {
//
// The agent has added new schema entries since we last heard from it.
- // Enqueue a notification.
+ // Update the attribute and, if this doesn't accompany a restart, enqueue a notification.
//
- auto_ptr<ConsoleEventImpl> eventImpl(new ConsoleEventImpl(CONSOLE_AGENT_SCHEMA_UPDATE));
- eventImpl->setAgent(agent);
- impl.setAttribute(iter->first, iter->second);
- enqueueEventLH(ConsoleEvent(eventImpl.release()));
+ if (!detectedRestart) {
+ auto_ptr<ConsoleEventImpl> eventImpl(new ConsoleEventImpl(CONSOLE_AGENT_SCHEMA_UPDATE));
+ eventImpl->setAgent(agent);
+ enqueueEventLH(ConsoleEvent(eventImpl.release()));
+ }
+ impl.setAttribute(protocol::AGENT_ATTR_SCHEMA_UPDATED_TIMESTAMP, iter->second);
}
}
}
---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project: http://qpid.apache.org
Use/Interact: mailto:commits-subscribe@qpid.apache.org