summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cpp/src/qpid/cluster/UpdateClient.cpp6
-rw-r--r--cpp/src/tests/ClusterFixture.cpp4
2 files changed, 8 insertions, 2 deletions
diff --git a/cpp/src/qpid/cluster/UpdateClient.cpp b/cpp/src/qpid/cluster/UpdateClient.cpp
index 17d856b79c..ab992bf8cf 100644
--- a/cpp/src/qpid/cluster/UpdateClient.cpp
+++ b/cpp/src/qpid/cluster/UpdateClient.cpp
@@ -158,6 +158,12 @@ void UpdateClient::update() {
connection.close();
QPID_LOG(debug, updaterId << " update completed to " << updateeId
<< " at " << updateeUrl << ": " << membership);
+ // FIXME aconway 2010-03-15: This sleep avoids the race condition
+ // described in // https://bugzilla.redhat.com/show_bug.cgi?id=568831.
+ // It allows the connection to fully close before destroying the
+ // Connection object. Remove when the bug is fixed.
+ //
+ sys::usleep(10*1000); // 100ms
}
namespace {
diff --git a/cpp/src/tests/ClusterFixture.cpp b/cpp/src/tests/ClusterFixture.cpp
index fd90ed170e..b7e8e88abf 100644
--- a/cpp/src/tests/ClusterFixture.cpp
+++ b/cpp/src/tests/ClusterFixture.cpp
@@ -130,11 +130,11 @@ void ClusterFixture::kill(size_t n, int sig) {
forkedBrokers[n]->kill(sig);
}
-/** Kill a broker and suppressing errors from closing connection c. */
+/** Kill a broker and suppress errors from closing connection c. */
void ClusterFixture::killWithSilencer(size_t n, client::Connection& c, int sig) {
ScopedSuppressLogging sl;
- kill(n,sig);
try { c.close(); } catch(...) {}
+ kill(n,sig);
}
/**