diff options
| author | Alan Conway <aconway@apache.org> | 2013-05-14 17:44:01 +0000 |
|---|---|---|
| committer | Alan Conway <aconway@apache.org> | 2013-05-14 17:44:01 +0000 |
| commit | a65e50afc4156c15964e29ffe32192e659ed677d (patch) | |
| tree | 251fb1736e0aa2a9035bbe09e0975dc9c9998fb4 | |
| parent | 67507504683596a6dfe76a0e368ce290f3d1f6de (diff) | |
| download | qpid-python-a65e50afc4156c15964e29ffe32192e659ed677d.tar.gz | |
QPID-4839: HA Sporadic failure of ha_tests.test_join_ready_cluster
Bug in StatusCheck, was setting fetch timeout to uninitialized value
which was sometimes 0, causing an immediate timeout of fetch.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@1482481 13f79535-47bb-0310-9956-ffa450edef68
| -rw-r--r-- | cpp/src/qpid/ha/Settings.h | 2 | ||||
| -rw-r--r-- | cpp/src/qpid/ha/StatusCheck.cpp | 13 |
2 files changed, 10 insertions, 5 deletions
diff --git a/cpp/src/qpid/ha/Settings.h b/cpp/src/qpid/ha/Settings.h index 94c157bccd..be735cfe0d 100644 --- a/cpp/src/qpid/ha/Settings.h +++ b/cpp/src/qpid/ha/Settings.h @@ -37,7 +37,7 @@ class Settings { public: Settings() : cluster(false), queueReplication(false), - replicateDefault(NONE), backupTimeout(5*sys::TIME_SEC), + replicateDefault(NONE), backupTimeout(10*sys::TIME_SEC), flowMessages(100), flowBytes(0) {} diff --git a/cpp/src/qpid/ha/StatusCheck.cpp b/cpp/src/qpid/ha/StatusCheck.cpp index e56efc5873..6f92bec19e 100644 --- a/cpp/src/qpid/ha/StatusCheck.cpp +++ b/cpp/src/qpid/ha/StatusCheck.cpp @@ -47,12 +47,12 @@ class StatusCheckThread : public sys::Runnable { private: Url url; StatusCheck& statusCheck; - sys::Duration linkHeartbeatInterval; BrokerInfo brokerInfo; }; void StatusCheckThread::run() { QPID_LOG(debug, statusCheck.logPrefix << "Checking status of " << url); + Connection c; try { Variant::Map options, clientProperties; clientProperties = brokerInfo.asMap(); // Detect self connections. @@ -62,7 +62,7 @@ void StatusCheckThread::run() { options["client-properties"] = clientProperties; options["heartbeat"] = statusCheck.linkHeartbeatInterval/sys::TIME_SEC; - Connection c(url.str(), options); + c = Connection(url.str(), options); c.open(); Session session = c.createSession(); @@ -81,7 +81,8 @@ void StatusCheckThread::run() { content["_object_id"] = oid; encode(content, request); s.send(request); - Message response = r.fetch(messaging::Duration(linkHeartbeatInterval/TIME_MSEC)); + messaging::Duration timeout(statusCheck.linkHeartbeatInterval/sys::TIME_MSEC); + Message response = r.fetch(timeout); session.acknowledge(); Variant::List contentIn; decode(response, contentIn); @@ -96,7 +97,11 @@ void StatusCheckThread::run() { QPID_LOG(debug, statusCheck.logPrefix << "Status of " << url << ": " << status); } } catch(const exception& error) { - QPID_LOG(info, "Checking status of " << url << ": " << error.what()); + QPID_LOG(info, statusCheck.logPrefix << "Checking status of " << url << ": " << error.what()); + } + try { c.close(); } + catch(const exception& e) { + QPID_LOG(warning, statusCheck.logPrefix << "Error closing status check connection to " << url); } delete this; } |
