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:[email protected]