qpid-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From mgoul...@apache.org
Subject svn commit: r954895 - /qpid/trunk/qpid/cpp/src/qpid/cluster/Cluster.cpp
Date Tue, 15 Jun 2010 14:07:53 GMT
Author: mgoulish
Date: Tue Jun 15 14:07:53 2010
New Revision: 954895

URL: http://svn.apache.org/viewvc?rev=954895&view=rev
Log:
This change is a partial fix for the problem of long cluster failovers.  This change addresses
part of that problem: long newbie-broker catchup times.

At this time, it looks as though there are two distinct mechanisms causing these long catchup
times.  They roughly divide into a population of times less than 20 seconds, and a population
of much longer times (up to hundreds of seconds).

This fix addresses only the shorter times.  In a test of 25 failovers before and after the
change, it reduced those times by an average of nearly 50%.  A T-test on the times indicates
that the likelihood of the observed change happening randomly is less than 2%.

Modified:
    qpid/trunk/qpid/cpp/src/qpid/cluster/Cluster.cpp

Modified: qpid/trunk/qpid/cpp/src/qpid/cluster/Cluster.cpp
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/cluster/Cluster.cpp?rev=954895&r1=954894&r2=954895&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/cluster/Cluster.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/cluster/Cluster.cpp Tue Jun 15 14:07:53 2010
@@ -444,8 +444,10 @@ void Cluster::deliveredEvent(const Event
         EventFrame ef(e, e.getFrame());
         // Stop the deliverEventQueue on update offers.
         // This preserves the connection decoder fragments for an update.
+        // Only do this for the two brokers that are directly involved in this 
+        // offer: the one making the offer, or the one receiving it.
         const ClusterUpdateOfferBody* offer = castUpdateOffer(ef.frame.getBody());
-        if (offer) {
+        if (offer && ( e.getMemberId() == self || MemberId(offer->getUpdatee())
== self) ) {
             QPID_LOG(info, *this << " stall for update offer from " << e.getMemberId()
                      << " to " << MemberId(offer->getUpdatee()));
             deliverEventQueue.stop();



---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:commits-subscribe@qpid.apache.org


Mime
View raw message