You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ac...@apache.org on 2012/07/31 15:47:29 UTC

svn commit: r1367547 - in /qpid/branches/0.18/qpid/cpp/src/qpid/ha: Backup.cpp Backup.h BrokerReplicator.cpp BrokerReplicator.h HaBroker.cpp Primary.cpp

Author: aconway
Date: Tue Jul 31 13:47:29 2012
New Revision: 1367547

URL: http://svn.apache.org/viewvc?rev=1367547&view=rev
Log:
QPID-4175: HA code rationalize logging

Clean up and rationalize log messages and levels.

notice: Major broker-level events: connecting, failing-over, primary active, backup ready.
info: Major queue level events: subscriptions ready, replicators created etc.
debug: Detailed replication events: accept/reject conections, details of queue replication protocol.
trace: dumping raw QMF messages

Modified:
    qpid/branches/0.18/qpid/cpp/src/qpid/ha/Backup.cpp
    qpid/branches/0.18/qpid/cpp/src/qpid/ha/Backup.h
    qpid/branches/0.18/qpid/cpp/src/qpid/ha/BrokerReplicator.cpp
    qpid/branches/0.18/qpid/cpp/src/qpid/ha/BrokerReplicator.h
    qpid/branches/0.18/qpid/cpp/src/qpid/ha/HaBroker.cpp
    qpid/branches/0.18/qpid/cpp/src/qpid/ha/Primary.cpp

Modified: qpid/branches/0.18/qpid/cpp/src/qpid/ha/Backup.cpp
URL: http://svn.apache.org/viewvc/qpid/branches/0.18/qpid/cpp/src/qpid/ha/Backup.cpp?rev=1367547&r1=1367546&r2=1367547&view=diff
==============================================================================
--- qpid/branches/0.18/qpid/cpp/src/qpid/ha/Backup.cpp (original)
+++ qpid/branches/0.18/qpid/cpp/src/qpid/ha/Backup.cpp Tue Jul 31 13:47:29 2012
@@ -115,4 +115,16 @@ void Backup::setBrokerUrl(const Url& url
         initialize(url);        // Deferred initialization
 }
 
+void Backup::setStatus(BrokerStatus status) {
+    switch (status) {
+      case READY:
+        QPID_LOG(notice, logPrefix << "Ready to become primary.");
+        break;
+      case CATCHUP:
+        QPID_LOG(notice, logPrefix << "Catching up on primary, cannot be promoted.");
+      default:
+        assert(0);
+    }
+}
+
 }} // namespace qpid::ha

Modified: qpid/branches/0.18/qpid/cpp/src/qpid/ha/Backup.h
URL: http://svn.apache.org/viewvc/qpid/branches/0.18/qpid/cpp/src/qpid/ha/Backup.h?rev=1367547&r1=1367546&r2=1367547&view=diff
==============================================================================
--- qpid/branches/0.18/qpid/cpp/src/qpid/ha/Backup.h (original)
+++ qpid/branches/0.18/qpid/cpp/src/qpid/ha/Backup.h Tue Jul 31 13:47:29 2012
@@ -50,12 +50,12 @@ class Backup
     Backup(HaBroker&, const Settings&);
     ~Backup();
     void setBrokerUrl(const Url&);
+    void setStatus(BrokerStatus);
 
   private:
     bool isSelf(const Address& a) const;
     Url removeSelf(const Url&) const;
     void initialize(const Url&);
-
     std::string logPrefix;
 
     sys::Mutex lock;

Modified: qpid/branches/0.18/qpid/cpp/src/qpid/ha/BrokerReplicator.cpp
URL: http://svn.apache.org/viewvc/qpid/branches/0.18/qpid/cpp/src/qpid/ha/BrokerReplicator.cpp?rev=1367547&r1=1367546&r2=1367547&view=diff
==============================================================================
--- qpid/branches/0.18/qpid/cpp/src/qpid/ha/BrokerReplicator.cpp (original)
+++ qpid/branches/0.18/qpid/cpp/src/qpid/ha/BrokerReplicator.cpp Tue Jul 31 13:47:29 2012
@@ -216,11 +216,10 @@ void BrokerReplicator::initializeBridge(
     userId = link->getConnection()->getUserId();
     remoteHost = link->getConnection()->getUrl();
 
-    qpid::Address primary;
     link->getRemoteAddress(primary);
     string queueName = bridge.getQueueName();
 
-    QPID_LOG(info, logPrefix << (initialized ? "Connecting" : "Failing-over")
+    QPID_LOG(info, logPrefix << (initialized ? "Connecting" : "Failing over")
              << " to primary " << primary
              << " status:" << printable(haBroker.getStatus()));
     initialized = true;
@@ -245,15 +244,15 @@ void BrokerReplicator::initializeBridge(
     sendQuery(ORG_APACHE_QPID_BROKER, QUEUE, queueName, sessionHandler);
     sendQuery(ORG_APACHE_QPID_BROKER, EXCHANGE, queueName, sessionHandler);
     sendQuery(ORG_APACHE_QPID_BROKER, BINDING, queueName, sessionHandler);
-
-    QPID_LOG(debug, logPrefix << "Connected to primary " << primary
-             << "(" << queueName << ")" << " status:" << printable(haBroker.getStatus()));
 }
 
 void BrokerReplicator::route(Deliverable& msg) {
     // We transition from JOINING->CATCHUP on the first message received from the primary.
     // Until now we couldn't be sure if we had a good connection to the primary.
-    if (haBroker.getStatus() == JOINING) haBroker.setStatus(CATCHUP);
+    if (haBroker.getStatus() == JOINING) {
+        haBroker.setStatus(CATCHUP);
+        QPID_LOG(notice, logPrefix << "Connected to primary " << primary);
+    }
 
     const framing::FieldTable* headers = msg.getMessage().getApplicationHeaders();
     const MessageProperties* messageProperties = msg.getMessage().getProperties<MessageProperties>();

Modified: qpid/branches/0.18/qpid/cpp/src/qpid/ha/BrokerReplicator.h
URL: http://svn.apache.org/viewvc/qpid/branches/0.18/qpid/cpp/src/qpid/ha/BrokerReplicator.h?rev=1367547&r1=1367546&r2=1367547&view=diff
==============================================================================
--- qpid/branches/0.18/qpid/cpp/src/qpid/ha/BrokerReplicator.h (original)
+++ qpid/branches/0.18/qpid/cpp/src/qpid/ha/BrokerReplicator.h Tue Jul 31 13:47:29 2012
@@ -25,6 +25,7 @@
 #include "types.h"
 #include "ReplicationTest.h"
 #include "AlternateExchangeSetter.h"
+#include "qpid/Address.h"
 #include "qpid/broker/Exchange.h"
 #include "qpid/types/Variant.h"
 #include "qpid/management/ManagementObject.h"
@@ -119,6 +120,7 @@ class BrokerReplicator : public broker::
     boost::shared_ptr<broker::Link> link;
     bool initialized;
     AlternateExchangeSetter alternates;
+    qpid::Address primary;
 };
 }} // namespace qpid::broker
 

Modified: qpid/branches/0.18/qpid/cpp/src/qpid/ha/HaBroker.cpp
URL: http://svn.apache.org/viewvc/qpid/branches/0.18/qpid/cpp/src/qpid/ha/HaBroker.cpp?rev=1367547&r1=1367546&r2=1367547&view=diff
==============================================================================
--- qpid/branches/0.18/qpid/cpp/src/qpid/ha/HaBroker.cpp (original)
+++ qpid/branches/0.18/qpid/cpp/src/qpid/ha/HaBroker.cpp Tue Jul 31 13:47:29 2012
@@ -110,16 +110,17 @@ void HaBroker::initialize() {
     if (!settings.clientUrl.empty()) setClientUrl(Url(settings.clientUrl));
     if (!settings.brokerUrl.empty()) setBrokerUrl(Url(settings.brokerUrl));
 
+
+    QPID_LOG(notice, logPrefix << "Initializing: " << brokerInfo);
+
     // NOTE: lock is not needed in a constructor, but create one
     // to pass to functions that have a ScopedLock parameter.
     Mutex::ScopedLock l(lock);
     statusChanged(l);
-
-    QPID_LOG(notice, logPrefix << "Broker starting: " << brokerInfo);
 }
 
 HaBroker::~HaBroker() {
-    QPID_LOG(debug, logPrefix << "Broker shut down: " << brokerInfo);
+    QPID_LOG(notice, logPrefix << "Shut down: " << brokerInfo);
     broker.getConnectionObservers().remove(observer);
 }
 
@@ -271,7 +272,7 @@ bool checkTransition(BrokerStatus from, 
 } // namespace
 
 void HaBroker::setStatus(BrokerStatus newStatus, Mutex::ScopedLock& l) {
-    QPID_LOG(notice, logPrefix << "Status change: "
+    QPID_LOG(info, logPrefix << "Status change: "
              << printable(status) << " -> " << printable(newStatus));
     bool legal = checkTransition(status, newStatus);
     assert(legal);
@@ -299,11 +300,14 @@ void HaBroker::membershipUpdated(Mutex::
 void HaBroker::setMembership(const Variant::List& brokers) {
     Mutex::ScopedLock l(lock);
     membership.assign(brokers);
-    QPID_LOG(debug, logPrefix << "Membership update: " <<  membership);
+    QPID_LOG(info, logPrefix << "Membership update: " <<  membership);
     BrokerInfo info;
-    // Update my status to what the primary thinks.
-    if (membership.get(systemId, info) && status != info.getStatus())
+    // Update my status to what the primary says it is.  The primary can toggle
+    // status between READY and CATCHUP based on the state of our subscriptions.
+    if (membership.get(systemId, info) && status != info.getStatus()) {
         setStatus(info.getStatus(), l);
+        if (backup.get()) backup->setStatus(status);
+    }
     membershipUpdated(l);
 }
 

Modified: qpid/branches/0.18/qpid/cpp/src/qpid/ha/Primary.cpp
URL: http://svn.apache.org/viewvc/qpid/branches/0.18/qpid/cpp/src/qpid/ha/Primary.cpp?rev=1367547&r1=1367546&r2=1367547&view=diff
==============================================================================
--- qpid/branches/0.18/qpid/cpp/src/qpid/ha/Primary.cpp (original)
+++ qpid/branches/0.18/qpid/cpp/src/qpid/ha/Primary.cpp Tue Jul 31 13:47:29 2012
@@ -81,13 +81,13 @@ Primary::Primary(HaBroker& hb, const Bro
     assert(instance == 0);
     instance = this;            // Let queue replicators find us.
     if (expect.empty()) {
-        QPID_LOG(debug, logPrefix << "Promoted, no expected backups");
+        QPID_LOG(notice, logPrefix << "Promoted to primary. No expected backups.");
     }
     else {
         // NOTE: RemoteBackups must be created before we set the ConfigurationObserver
         // or ConnectionObserver so that there is no client activity while
         // the QueueGuards are created.
-        QPID_LOG(debug, logPrefix << "Promoted, expected backups: " << expect);
+        QPID_LOG(notice, logPrefix << "Promoted to primary. Expected backups: " << expect);
         for (BrokerInfo::Set::const_iterator i = expect.begin(); i != expect.end(); ++i) {
             boost::shared_ptr<RemoteBackup> backup(
                 new RemoteBackup(*i, haBroker.getReplicationTest(), false));
@@ -130,14 +130,13 @@ void Primary::checkReady(BackupMap::iter
     if (i != backups.end() && i->second->reportReady()) {
         BrokerInfo info = i->second->getBrokerInfo();
         info.setStatus(READY);
-        QPID_LOG(info, "Expected backup is ready: " << info);
         haBroker.addBroker(info);
         if (expectedBackups.erase(i->second)) {
             QPID_LOG(info, logPrefix << "Expected backup is ready: " << info);
             checkReady(l);
         }
         else
-            QPID_LOG(info, logPrefix << "Backup is ready: " << info);
+            QPID_LOG(info, logPrefix << "New backup is ready: " << info);
     }
 }
 



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org