From a65e50afc4156c15964e29ffe32192e659ed677d Mon Sep 17 00:00:00 2001 From: Alan Conway Date: Tue, 14 May 2013 17:44:01 +0000 Subject: 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 --- cpp/src/qpid/ha/Settings.h | 2 +- cpp/src/qpid/ha/StatusCheck.cpp | 13 +++++++++---- 2 files changed, 10 insertions(+), 5 deletions(-) (limited to 'cpp') 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; } -- cgit v1.2.1