From a350f8490e73d12acf8e59d164f206a1bbf4acc1 Mon Sep 17 00:00:00 2001 From: Alan Conway Date: Mon, 7 Mar 2011 21:01:49 +0000 Subject: QPID-3121: Cluster management inconsistency when using persistent store. With the store doing async completions, completion IO callbacks could be queued differently on different nodes. This led to inconsistent management changes in a cluster when a connection was modified in an IO callback. Fix was to mark IO callback processing as not cluster safe, so connections don't record management stats during an IO callback. Test changes: - enable durable tests in test_management. - add substitutions to mask known issue of inconsistent "stats changed" messages. - add transactional client to test_management. - ignore heartbeat connection close logs in cluster_test_logs.py - make brokertest.retry more accurate - fix minor bug in brokertest.log_ready. git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@1078947 13f79535-47bb-0310-9956-ffa450edef68 --- cpp/src/qpid/sys/ClusterSafe.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'cpp/src/qpid/sys/ClusterSafe.cpp') diff --git a/cpp/src/qpid/sys/ClusterSafe.cpp b/cpp/src/qpid/sys/ClusterSafe.cpp index b67b04c267..dd37615145 100644 --- a/cpp/src/qpid/sys/ClusterSafe.cpp +++ b/cpp/src/qpid/sys/ClusterSafe.cpp @@ -51,6 +51,16 @@ ClusterSafeScope::~ClusterSafeScope() { inContext = save; } +ClusterUnsafeScope::ClusterUnsafeScope() { + save = inContext; + inContext = false; +} + +ClusterUnsafeScope::~ClusterUnsafeScope() { + assert(!inContext); + inContext = save; +} + void enableClusterSafe() { inCluster = true; } }} // namespace qpid::sys -- cgit v1.2.1