summaryrefslogtreecommitdiff
path: root/cpp
diff options
context:
space:
mode:
authorAndrew Stitcher <astitcher@apache.org>2009-06-01 22:30:24 +0000
committerAndrew Stitcher <astitcher@apache.org>2009-06-01 22:30:24 +0000
commit31cdbb90eb2bef73d8a8e9ae2e68f771683a7ce1 (patch)
tree9b9bc229cef21d02aaed68325a030fa55b9669cb /cpp
parent20a83ba3acd18fffdf20785ef8c39fb6c1997143 (diff)
downloadqpid-python-31cdbb90eb2bef73d8a8e9ae2e68f771683a7ce1.tar.gz
Some fixes to QPID-1879 so that clustering still works:
Change client io threading to be initialised at first use Stop linking loadable modules with tests Add some sentinel values so that we can see what happened last git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@780855 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp')
-rw-r--r--cpp/src/qpid/client/ConnectionImpl.cpp11
-rw-r--r--cpp/src/qpid/sys/epoll/EpollPoller.cpp5
-rw-r--r--cpp/src/tests/cluster.mk4
3 files changed, 11 insertions, 9 deletions
diff --git a/cpp/src/qpid/client/ConnectionImpl.cpp b/cpp/src/qpid/client/ConnectionImpl.cpp
index ccaa8c0b87..2fdf4d1d25 100644
--- a/cpp/src/qpid/client/ConnectionImpl.cpp
+++ b/cpp/src/qpid/client/ConnectionImpl.cpp
@@ -130,7 +130,10 @@ public:
}
};
-static IOThread io(SystemInfo::concurrency());
+IOThread& theIO() {
+ static IOThread io(SystemInfo::concurrency());
+ return io;
+}
class HeartbeatTask : public TimerTask {
TimeoutHandler& timeout;
@@ -173,7 +176,7 @@ ConnectionImpl::~ConnectionImpl() {
// is running.
failover.reset();
if (connector) connector->close();
- io.sub();
+ theIO().sub();
}
void ConnectionImpl::addSession(const boost::shared_ptr<SessionImpl>& session, uint16_t channel)
@@ -217,8 +220,8 @@ void ConnectionImpl::open()
int port = handler.port;
QPID_LOG(info, "Connecting to " << protocol << ":" << host << ":" << port);
- io.add();
- connector.reset(Connector::create(protocol, io.poller(), version, handler, this));
+ theIO().add();
+ connector.reset(Connector::create(protocol, theIO().poller(), version, handler, this));
connector->setInputHandler(&handler);
connector->setShutdownHandler(this);
connector->connect(host, port);
diff --git a/cpp/src/qpid/sys/epoll/EpollPoller.cpp b/cpp/src/qpid/sys/epoll/EpollPoller.cpp
index 42a2b2bbab..5a6b8987ec 100644
--- a/cpp/src/qpid/sys/epoll/EpollPoller.cpp
+++ b/cpp/src/qpid/sys/epoll/EpollPoller.cpp
@@ -258,7 +258,7 @@ class PollerPrivate {
// Add always readable fd into our set (but not listening to it yet)
::epoll_event epe;
epe.events = 0;
- epe.data.u64 = 0;
+ epe.data.u64 = 1;
QPID_POSIX_CHECK(::epoll_ctl(epollFd, EPOLL_CTL_ADD, alwaysReadableFd, &epe));
}
@@ -285,7 +285,7 @@ class PollerPrivate {
::epoll_event epe;
// Not EPOLLONESHOT, so we eventually get all threads
epe.events = ::EPOLLIN;
- epe.data.u64 = 0; // Keep valgrind happy
+ epe.data.u64 = 2; // Keep valgrind happy
QPID_POSIX_CHECK(::epoll_ctl(epollFd, EPOLL_CTL_MOD, alwaysReadableFd, &epe));
}
};
@@ -442,6 +442,7 @@ bool Poller::interrupt(PollerHandle& handle) {
::epoll_event epe;
epe.events = 0;
epe.data.u64 = 0; // Keep valgrind happy
+ epe.data.ptr = &eh;
QPID_POSIX_CHECK(::epoll_ctl(impl->epollFd, EPOLL_CTL_MOD, eh.fd, &epe));
if (eh.isInactive()) {
diff --git a/cpp/src/tests/cluster.mk b/cpp/src/tests/cluster.mk
index 3e75d0bf87..6d680f361e 100644
--- a/cpp/src/tests/cluster.mk
+++ b/cpp/src/tests/cluster.mk
@@ -49,8 +49,6 @@ EXTRA_DIST += \
cluster.py
-unit_test_LDADD += ../cluster.la
-
LONG_TESTS += \
start_cluster \
cluster_python_tests \
@@ -66,7 +64,7 @@ cluster_test_SOURCES = \
ForkedBroker.cpp \
PartialFailure.cpp \
ClusterFailover.cpp
-cluster_test_LDADD=$(lib_client) ../cluster.la test_store.la -lboost_unit_test_framework
+cluster_test_LDADD=$(lib_client) $(lib_broker) -lboost_unit_test_framework
qpidtest_SCRIPTS += run_cluster_tests cluster.py testlib.py