summaryrefslogtreecommitdiff
path: root/cpp/src/cluster.mk
diff options
context:
space:
mode:
authorAlan Conway <aconway@apache.org>2009-08-10 21:10:53 +0000
committerAlan Conway <aconway@apache.org>2009-08-10 21:10:53 +0000
commit9a0521e5562ba6bf5c3468eb171c109e166cfa5d (patch)
treea0f3e6be8d28b634a0e2ee94d5fd853dc3562ffb /cpp/src/cluster.mk
parent5518c23f9a69f6d616abc770bda0677b2f0b51ac (diff)
downloadqpid-python-9a0521e5562ba6bf5c3468eb171c109e166cfa5d.tar.gz
Watchdog feature to remove unresponsive cluster nodes.
In some intstances (e.g. while resolving an error) it's possible for a hung process to hang the entire cluster as they wait for its response. The cluster can handle terminated processes but hung processes present a problem. If the watchdog plugin is loaded and --watchdog-interval is set then the broker forks a child process that runs a very simple watchdog program, and starts a timer in the broker process to signal the watchdog every interval/2 seconds. The watchdog kills its parent if it does not receive a signal for interval seconds. This allows a stuck broker to be removed from the cluster so other cluster members can continue. git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@802927 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/cluster.mk')
-rw-r--r--cpp/src/cluster.mk9
1 files changed, 9 insertions, 0 deletions
diff --git a/cpp/src/cluster.mk b/cpp/src/cluster.mk
index c4907a1b04..d90a06e1e2 100644
--- a/cpp/src/cluster.mk
+++ b/cpp/src/cluster.mk
@@ -89,4 +89,13 @@ cluster_la_LIBADD= -lcpg $(libcman) libqpidbroker.la libqpidclient.la
cluster_la_CXXFLAGS = $(AM_CXXFLAGS) -fno-strict-aliasing
cluster_la_LDFLAGS = $(PLUGINLDFLAGS)
+# The watchdog plugin and helper executable
+dmodule_LTLIBRARIES += watchdog.la
+watchdog_la_SOURCES = qpid/cluster/WatchDogPlugin.cpp
+watchdog_la_LIBADD = libqpidbroker.la
+watchdog_la_LDFLAGS = $(PLUGINLDFLAGS)
+
+qpidexec_PROGRAMS += qpidd_watchdog
+qpidd_watchdog_SOURCES = qpid/cluster/qpidd_watchdog.cpp
+
endif # HAVE_LIBCPG