summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Conway <aconway@apache.org>2013-05-14 17:44:01 +0000
committerAlan Conway <aconway@apache.org>2013-05-14 17:44:01 +0000
commita65e50afc4156c15964e29ffe32192e659ed677d (patch)
tree251fb1736e0aa2a9035bbe09e0975dc9c9998fb4
parent67507504683596a6dfe76a0e368ce290f3d1f6de (diff)
downloadqpid-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.h2
-rw-r--r--cpp/src/qpid/ha/StatusCheck.cpp13
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;
}