diff options
| author | Alan Conway <aconway@apache.org> | 2011-03-07 21:01:49 +0000 |
|---|---|---|
| committer | Alan Conway <aconway@apache.org> | 2011-03-07 21:01:49 +0000 |
| commit | a350f8490e73d12acf8e59d164f206a1bbf4acc1 (patch) | |
| tree | 0f5ea967e94e1b615fe7451c0f6c04a2e1ebf3e3 /cpp/src/qpid/sys/ClusterSafe.cpp | |
| parent | 13b49ccb8917b4f71707c4d2cebe40a2514f2c3d (diff) | |
| download | qpid-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.cpp | 10 |
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 |
