summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGordon Sim <gsim@apache.org>2012-07-20 15:44:59 +0000
committerGordon Sim <gsim@apache.org>2012-07-20 15:44:59 +0000
commit4d2076e247c1ac53240688242e148a1b0d574c9e (patch)
treec406dbb31e7b5d97914a064cdbe231f9a459c114
parent43d9dfab9fbff43f805dddf007f0389459b7401b (diff)
downloadqpid-python-4d2076e247c1ac53240688242e148a1b0d574c9e.tar.gz
QPID-4158: HA transition to CATCHUP status too early; merged from 1363520
git-svn-id: https://svn.apache.org/repos/asf/qpid/branches/0.18@1363852 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--qpid/cpp/src/qpid/ha/BrokerReplicator.cpp20
1 files changed, 4 insertions, 16 deletions
diff --git a/qpid/cpp/src/qpid/ha/BrokerReplicator.cpp b/qpid/cpp/src/qpid/ha/BrokerReplicator.cpp
index cf2b5d9bea..1a1cad1e42 100644
--- a/qpid/cpp/src/qpid/ha/BrokerReplicator.cpp
+++ b/qpid/cpp/src/qpid/ha/BrokerReplicator.cpp
@@ -218,22 +218,6 @@ void BrokerReplicator::initializeBridge(Bridge& bridge, SessionHandler& sessionH
<< " status:" << printable(haBroker.getStatus()));
initialized = true;
- switch (haBroker.getStatus()) {
- case JOINING:
- haBroker.setStatus(CATCHUP);
- break;
- case CATCHUP:
- break;
- case READY:
- break;
- case RECOVERING:
- case ACTIVE:
- assert(0); // Primary does not reconnect.
- return;
- case STANDALONE:
- return;
- }
-
framing::AMQP_ServerProxy peer(sessionHandler.out);
const qmf::org::apache::qpid::broker::ArgsLinkBridge& args(bridge.getArgs());
@@ -260,6 +244,10 @@ void BrokerReplicator::initializeBridge(Bridge& bridge, SessionHandler& sessionH
}
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);
+
const framing::FieldTable* headers = msg.getMessage().getApplicationHeaders();
Variant::List list;
try {