[SCM] CTDB repository - branch 1.2 updated - ctdb-1.9.1-240-gd0b790d

Ronnie Sahlberg sahlberg at samba.org
Tue Nov 16 20:15:33 MST 2010


The branch, 1.2 has been updated
       via  d0b790de08b9c9226ac9848b434a051d99a41dd8 (commit)
      from  62179c80701cd4f773afaba54cde577de234f72d (commit)

http://gitweb.samba.org/?p=sahlberg/ctdb.git;a=shortlog;h=1.2


- Log -----------------------------------------------------------------
commit d0b790de08b9c9226ac9848b434a051d99a41dd8
Author: Ronnie Sahlberg <ronniesahlberg at gmail.com>
Date:   Wed Nov 17 13:50:56 2010 +1100

    add a new support function ctdb_check_counter_equal()
    
    update nfs to try to restart the service after 10 consecutive failures
    and to flag the node unhealthy after 15
    
    add similar function to mountd

-----------------------------------------------------------------------

Summary of changes:
 config/events.d/60.nfs |   34 ++++++++++++++++++++++++++++++----
 config/functions       |   13 +++++++++++++
 2 files changed, 43 insertions(+), 4 deletions(-)


Changeset truncated at 500 lines:

diff --git a/config/events.d/60.nfs b/config/events.d/60.nfs
index 038adbb..8889cad 100755
--- a/config/events.d/60.nfs
+++ b/config/events.d/60.nfs
@@ -78,15 +78,20 @@ case "$1" in
 		(
 			service_name="nfs_knfsd"
 			ctdb_counter_incr
-			ctdb_check_counter_limit 10 quiet >/dev/null
+
+			ctdb_check_counter_equal 10 || {
+				echo "Trying to restart NFS service"
+				startstop_nfs restart >/dev/null 2>&1 &
+				exit 0
+			}
+
+			ctdb_check_counter_limit 15 quiet >/dev/null
 		) || {
 			echo "$ctdb_check_rpc_out"
 			echo "Trying to restart NFS service"
 			startstop_nfs restart
 			exit 1
 		}
-		# we haven't hit the failure limit so restart quietly
-		startstop_nfs restart >/dev/null 2>&1 &
 	    fi
 	}
 
@@ -107,7 +112,25 @@ case "$1" in
 
 	# mount needs special handling since it is sometimes not started
 	# correctly on RHEL5
-	ctdb_check_rpc "MOUNTD" 100005 1 || {
+	if ctdb_check_rpc "MOUNTD" 100005 1 >/dev/null ; then
+		(service_name="nfs_mountd"; ctdb_counter_init)
+	else
+	(
+		service_name="nfs_mountd"
+		ctdb_counter_incr
+
+		ctdb_check_counter_equal 5 || {
+			p="rpc.mountd"
+			cmd="${p}${MOUNTD_PORT:+ -p }${MOUNTD_PORT}"
+			echo "Trying to restart MOUNTD [${cmd}]"
+			killall -q -9 $p
+			$cmd &
+			exit 0
+		}
+
+		ctdb_check_counter_limit 10 quiet >/dev/null
+	) || {
+		echo "$ctdb_check_rpc_out"
 		p="rpc.mountd"
 		cmd="${p}${MOUNTD_PORT:+ -p }${MOUNTD_PORT}"
 		echo "Trying to restart MOUNTD [${cmd}]"
@@ -115,6 +138,9 @@ case "$1" in
 		$cmd &
 		exit 1
 	}
+	fi
+
+
 	# rquotad needs special handling since it is sometimes not started
 	# correctly on RHEL5
 	# this is not a critical service so we dont flag the node as unhealthy
diff --git a/config/functions b/config/functions
index 610085b..4acfc4f 100755
--- a/config/functions
+++ b/config/functions
@@ -571,6 +571,19 @@ ctdb_check_counter_limit () {
 	echo "WARNING: less than $_limit consecutive failures ($_size) for $service_name, not unhealthy yet"
     fi
 }
+ctdb_check_counter_equal () {
+    _ctdb_counter_common
+
+    _limit=$1
+
+    # unary counting!
+    _size=$(stat -c "%s" "$_counter_file" 2>/dev/null || echo 0)
+    if [ $_size -eq $_limit ] ; then
+	return 1
+    fi
+    return 0
+}
+
 ########################################################
 
 ctdb_spool_dir="/var/spool/ctdb"


-- 
CTDB repository


More information about the samba-cvs mailing list