diff options
| author | Alan Conway <aconway@apache.org> | 2013-12-18 17:04:05 +0000 |
|---|---|---|
| committer | Alan Conway <aconway@apache.org> | 2013-12-18 17:04:05 +0000 |
| commit | 92bea0d94c0cd05607d8df7881881632a1dbd5ae (patch) | |
| tree | 653dfc32dcef3c5087727415feb7b9a8b1f9d911 /cpp | |
| parent | f35b6fde0b091d71791eadff5ffdd6d550642fec (diff) | |
| download | qpid-python-92bea0d94c0cd05607d8df7881881632a1dbd5ae.tar.gz | |
QPID-5430: HA primary broker does not go active if there are no replicated queues.
Primary::opened was not checking if the primary was ready after a knonw backup
reconnected, only when a replicated queue became ready. Thus if there were
no replicated queues the primary never became ready.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@1552025 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp')
| -rw-r--r-- | cpp/src/qpid/ha/Primary.cpp | 1 | ||||
| -rwxr-xr-x | cpp/src/tests/ha_tests.py | 9 |
2 files changed, 8 insertions, 2 deletions
diff --git a/cpp/src/qpid/ha/Primary.cpp b/cpp/src/qpid/ha/Primary.cpp index b437190004..b29a550559 100644 --- a/cpp/src/qpid/ha/Primary.cpp +++ b/cpp/src/qpid/ha/Primary.cpp @@ -336,6 +336,7 @@ void Primary::opened(broker::Connection& connection) { } else { QPID_LOG(info, logPrefix << "Known backup reconnection: " << info); i->second->setConnection(&connection); + backup = i->second; } if (info.getStatus() == JOINING) { info.setStatus(CATCHUP); diff --git a/cpp/src/tests/ha_tests.py b/cpp/src/tests/ha_tests.py index 7db24810bf..7a292f177a 100755 --- a/cpp/src/tests/ha_tests.py +++ b/cpp/src/tests/ha_tests.py @@ -253,8 +253,6 @@ class ReplicationTests(HaBrokerTest): """Verify that a backup broker fails over and recovers queue state""" brokers = HaCluster(self, 3) brokers[0].connect().session().sender("q;{create:always}").send("a") - for b in brokers[1:]: b.assert_browse_backup("q", ["a"], msg=b) - brokers[0].expect = EXPECT_EXIT_FAIL brokers.kill(0) brokers[1].connect().session().sender("q").send("b") brokers[2].assert_browse_backup("q", ["a","b"]) @@ -263,6 +261,13 @@ class ReplicationTests(HaBrokerTest): s.acknowledge() brokers[2].assert_browse_backup("q", ["b"]) + def test_empty_backup_failover(self): + """Verify that a new primary becomes active with no queues. + Regression test for QPID-5430""" + brokers = HaCluster(self, 3) + brokers.kill(0) + brokers[1].wait_status("active") + def test_qpid_config_replication(self): """Set up replication via qpid-config""" brokers = HaCluster(self,2) |
