summaryrefslogtreecommitdiff
path: root/cpp/src/qpid/sys/ClusterSafe.cpp
diff options
context:
space:
mode:
authorAlan Conway <aconway@apache.org>2011-03-07 21:01:49 +0000
committerAlan Conway <aconway@apache.org>2011-03-07 21:01:49 +0000
commita350f8490e73d12acf8e59d164f206a1bbf4acc1 (patch)
tree0f5ea967e94e1b615fe7451c0f6c04a2e1ebf3e3 /cpp/src/qpid/sys/ClusterSafe.cpp
parent13b49ccb8917b4f71707c4d2cebe40a2514f2c3d (diff)
downloadqpid-python-a350f8490e73d12acf8e59d164f206a1bbf4acc1.tar.gz
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
Diffstat (limited to 'cpp/src/qpid/sys/ClusterSafe.cpp')
-rw-r--r--cpp/src/qpid/sys/ClusterSafe.cpp10
1 files changed, 10 insertions, 0 deletions
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