diff options
| author | Ted Ross <tross@apache.org> | 2008-12-01 16:38:54 +0000 |
|---|---|---|
| committer | Ted Ross <tross@apache.org> | 2008-12-01 16:38:54 +0000 |
| commit | 1d8a1fa5fdbbe04f7c5412c51facae9b5b2518a5 (patch) | |
| tree | a672ee4efbc0a5289fe37d93bf4afcd4879d655f /cpp/src/qpid/management/ManagementBroker.cpp | |
| parent | 8f38c8b511bbf232c5a65203b415aff456e61992 (diff) | |
| download | qpid-python-1d8a1fa5fdbbe04f7c5412c51facae9b5b2518a5.tar.gz | |
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
Diffstat (limited to 'cpp/src/qpid/management/ManagementBroker.cpp')
| -rw-r--r-- | cpp/src/qpid/management/ManagementBroker.cpp | 10 |
1 files changed, 7 insertions, 3 deletions
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<ObjectId, ManagementObject*>(iter->first, object)); + object->setForcePublish(false); } // Delete flagged objects |
