From 1d8a1fa5fdbbe04f7c5412c51facae9b5b2518a5 Mon Sep 17 00:00:00 2001 From: Ted Ross Date: Mon, 1 Dec 2008 16:38:54 +0000 Subject: Fixed a performance regression caused by the management code. The current/last-change timestamp is now set on management objects when they are published, not when they actually change. Also, the timestamp is updated only if modifications were made to the object in the last publish interval. git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@722120 13f79535-47bb-0310-9956-ffa450edef68 --- cpp/src/qpid/management/ManagementBroker.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'cpp/src/qpid/management/ManagementBroker.cpp') diff --git a/cpp/src/qpid/management/ManagementBroker.cpp b/cpp/src/qpid/management/ManagementBroker.cpp index e9610ca282..7a092bbb1b 100644 --- a/cpp/src/qpid/management/ManagementBroker.cpp +++ b/cpp/src/qpid/management/ManagementBroker.cpp @@ -354,7 +354,7 @@ void ManagementBroker::periodicProcessing (void) iter != managementObjects.end (); iter++) { ManagementObject* object = iter->second; - object->setAllChanged (); + object->setForcePublish(true); } } @@ -364,7 +364,10 @@ void ManagementBroker::periodicProcessing (void) { ManagementObject* object = iter->second; - if (object->getConfigChanged () || object->isDeleted ()) + if (object->getConfigChanged() || object->getInstChanged()) + object->setUpdateTime(); + + if (object->getConfigChanged() || object->getForcePublish() || object->isDeleted()) { Buffer msgBuffer (msgChars, BUFSIZE); encodeHeader (msgBuffer, 'c'); @@ -376,7 +379,7 @@ void ManagementBroker::periodicProcessing (void) sendBuffer (msgBuffer, contentSize, mExchange, routingKey); } - if (object->getInstChanged ()) + if (object->getInstChanged() || object->getForcePublish()) { Buffer msgBuffer (msgChars, BUFSIZE); encodeHeader (msgBuffer, 'i'); @@ -390,6 +393,7 @@ void ManagementBroker::periodicProcessing (void) if (object->isDeleted()) deleteList.push_back(pair(iter->first, object)); + object->setForcePublish(false); } // Delete flagged objects -- cgit v1.2.1