Hi, While playing with the conntrackd agent on Debian Squeeze, I found out the method used in the monitor action is not accurate and can sometimes yield false results, believing conntrackd is running when it is not. I am instead checking the existence of the control socket and it has so far proved more stable.
Patch attached. -- Albéric de Pertat ADELUX: http://www.adelux.fr Tel: 01 40 86 45 81 GPG: http://www.adelux.fr/societe/gpg/alberic.asc
--- conntrackd 2011-08-18 12:12:36.807562142 +0200
+++ /usr/lib/ocf/resource.d/heartbeat/conntrackd 2011-08-18 12:25:20.000000000 +0200
@@ -111,8 +111,10 @@
conntrackd_monitor() {
rc=$OCF_NOT_RUNNING
- # It does not write a PID file, so check with pgrep
- pgrep -f $OCF_RESKEY_binary && rc=$OCF_SUCCESS
+ # It does not write a PID file, so check the socket exists after
+ # extracting its path from the configuration file
+ local conntrack_socket=$(awk '/^ *UNIX *{/,/^ *}/ { if ($0 ~ /^ *Path /) { print $2 } }' $OCF_RESKEY_config)
+ [ -S $conntrack_socket ] && rc=$OCF_SUCCESS
if [ "$rc" -eq "$OCF_SUCCESS" ]; then
# conntrackd is running
# now see if it acceppts queries
signature.asc
Description: This is a digitally signed message part.
_______________________________________________________ Linux-HA-Dev: [email protected] http://lists.linux-ha.org/mailman/listinfo/linux-ha-dev Home Page: http://linux-ha.org/
