diff options
author | Gordon Sim <gsim@apache.org> | 2012-07-20 15:44:59 +0000 |
---|---|---|
committer | Gordon Sim <gsim@apache.org> | 2012-07-20 15:44:59 +0000 |
commit | 4d2076e247c1ac53240688242e148a1b0d574c9e (patch) | |
tree | c406dbb31e7b5d97914a064cdbe231f9a459c114 | |
parent | 43d9dfab9fbff43f805dddf007f0389459b7401b (diff) | |
download | qpid-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.cpp | 20 |
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 { |