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

Attachment: 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/

Reply via email to