summaryrefslogtreecommitdiff
path: root/qpid/cpp
diff options
context:
space:
mode:
authorAlan Conway <aconway@apache.org>2013-05-15 21:53:55 +0000
committerAlan Conway <aconway@apache.org>2013-05-15 21:53:55 +0000
commit1ac96337681e45c51d3b9e55412067cf2fdb4ec1 (patch)
treeca8c44728b7b87eede5c5320837e8a8820658fc6 /qpid/cpp
parentbb3c2c8a29ba6186970e973cfba65369fb40765f (diff)
downloadqpid-python-1ac96337681e45c51d3b9e55412067cf2fdb4ec1.tar.gz
QPID-4850: HA Sporadic stall in ha_tests.test_failover_send_receive
Fixed a deadlock in the test: test was killing a backup broker then waiting to pass a checkpoint: however if the backup was expected by the primary, the primary holds queues till it connects, so we deadlock. git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1483107 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/cpp')
-rw-r--r--qpid/cpp/src/qpid/ha/QueueReplicator.cpp1
-rw-r--r--qpid/cpp/src/qpid/ha/ReplicatingSubscription.h4
-rwxr-xr-xqpid/cpp/src/tests/ha_tests.py8
3 files changed, 4 insertions, 9 deletions
diff --git a/qpid/cpp/src/qpid/ha/QueueReplicator.cpp b/qpid/cpp/src/qpid/ha/QueueReplicator.cpp
index 3580c49826..946831319c 100644
--- a/qpid/cpp/src/qpid/ha/QueueReplicator.cpp
+++ b/qpid/cpp/src/qpid/ha/QueueReplicator.cpp
@@ -162,6 +162,7 @@ QueueReplicator::~QueueReplicator() {}
// Called from Queue::destroyed()
void QueueReplicator::destroy() {
+ QPID_LOG(debug, logPrefix << " destroyed");
boost::shared_ptr<Bridge> bridge2; // To call outside of lock
{
Mutex::ScopedLock l(lock);
diff --git a/qpid/cpp/src/qpid/ha/ReplicatingSubscription.h b/qpid/cpp/src/qpid/ha/ReplicatingSubscription.h
index 7fcb4ccf13..2780f4fd00 100644
--- a/qpid/cpp/src/qpid/ha/ReplicatingSubscription.h
+++ b/qpid/cpp/src/qpid/ha/ReplicatingSubscription.h
@@ -61,8 +61,8 @@ class QueueGuard;
*
* Lifecycle: broker::Queue holds shared_ptrs to this as a consumer.
*
- * Lock Hierarchy: ReplicatingSubscription MUS NOT call QueueGuard with it's lock held
- * QueueGuard MAY call ReplicatingSubscription with it's lock held.
+ * Lock Hierarchy: ReplicatingSubscription MUST NOT call QueueGuard with its
+ * lock held QueueGuard MAY call ReplicatingSubscription with its lock held.
*/
class ReplicatingSubscription : public broker::SemanticState::ConsumerImpl
{
diff --git a/qpid/cpp/src/tests/ha_tests.py b/qpid/cpp/src/tests/ha_tests.py
index 3f870ba5b8..8b4ff80dd0 100755
--- a/qpid/cpp/src/tests/ha_tests.py
+++ b/qpid/cpp/src/tests/ha_tests.py
@@ -972,19 +972,13 @@ class LongTests(HaBrokerTest):
brokers.bounce(victim) # Next one is promoted
primary = next
else:
- brokers.kill(victim, promote_next=False, final=False)
- dead = victim
+ brokers.bounce(victim, promote_next=False)
# Make sure we are not stalled
map(wait_passed, receivers, checkpoint)
# Run another checkpoint to ensure things work in this configuration
checkpoint = [ r.received+100 for r in receivers ]
map(wait_passed, receivers, checkpoint)
-
- if dead is not None:
- brokers.restart(dead) # Restart backup
- brokers[dead].ready()
- dead = None
i += 1
except:
traceback.print_exc()