eventscript: Move Ganesha nfsd monitoring to a function
authorMartin Schwenke <martin@meltin.net>
Thu, 4 Jul 2013 06:00:33 +0000 (16:00 +1000)
committerAmitay Isaacs <amitay@gmail.com>
Fri, 5 Jul 2013 05:52:33 +0000 (15:52 +1000)
Signed-off-by: Martin Schwenke <martin@meltin.net>
config/events.d/60.ganesha

index 9f613db5b91bbbed7b2364cc3d3f678a767c8c07..46273da3158479d2519113d30c497140982f9487 100755 (executable)
@@ -88,6 +88,63 @@ create_ganesha_recdirs ()
     mkdir -p $GANRECDIR3
 }
 
+monitor_ganesha_nfsd ()
+{
+       create_ganesha_recdirs
+       service_name=${service_name}_process
+
+       PIDFILE="/var/run/ganesha.pid"
+       CUR_STATE=`get_cluster_fs_state`
+       GANESHA="/usr/bin/$CTDB_CLUSTER_FILESYSTEM_TYPE.ganesha.nfsd"
+       if { read PID < $PIDFILE && \
+           grep "$GANESHA" "/proc/$PID/cmdline" ; } >/dev/null 2>&1 ; then
+               ctdb_counter_init "$service_name"
+       else
+           if [ $CUR_STATE = "active" ]; then
+               echo "Trying fast restart of NFS service"
+               startstop_ganesha restart
+               ctdb_counter_incr "$service_name"
+               ctdb_check_counter "error" "-ge" "6" "$service_name"
+           fi
+       fi
+
+       service_name="nfs-ganesha-$CTDB_CLUSTER_FILESYSTEM_TYPE"_service
+       # check that NFS is posting forward progress
+       if [ $CUR_STATE = "active" -a "$CTDB_NFS_SKIP_KNFSD_ALIVE_CHECK" != "yes" ] ; then
+           MAXREDS=2
+           MAXSTALL=120
+           RESTART=0
+
+           NUMREDS=`ls $GANRECDIR3 | grep "red" | wc -l`
+           LASTONE=`ls -t $GANRECDIR3 | sed 's/_/ /' | awk 'NR > 1 {next} {printf $1} '`
+           # Beware of startup
+           if [ -z $LASTONE ] ; then
+               LASTONE=`date +"%s"`
+           fi
+           TNOW=$(date +"%s")
+           TSTALL=$(($TNOW - $LASTONE))
+           if [ $NUMREDS -ge $MAXREDS ] ; then
+               echo restarting because of $NUMREDS red conditions
+               RESTART=1
+               ctdb_counter_incr "$service_name"
+               ctdb_check_counter "error" "-ge" "6" "$service_name"
+           fi
+           if [ $TSTALL -ge $MAXSTALL ] ; then
+               echo restarting because of $TSTALL second stall
+               RESTART=1
+               ctdb_counter_incr "$service_name"
+               ctdb_check_counter "error" "-ge" "6" "$service_name"
+           fi
+           if [ $RESTART -gt 0 ] ; then
+               startstop_ganesha restart
+           else
+               ctdb_counter_init "$service_name"
+           fi
+       fi
+}
+
+############################################################
+
 case "$1" in
      init)
        # read statd from persistent database
@@ -131,8 +188,7 @@ case "$1" in
 
      monitor)
        update_tickles 2049
-       create_ganesha_recdirs
-       service_name=${service_name}_process
+
        # check that statd responds to rpc requests
        # if statd is not running we try to restart it
        # we only do this IF we have a rpc.statd command.
@@ -145,55 +201,7 @@ case "$1" in
                -eq 4 "verbose restart" \
                -eq 2 "restart:bs"
 
-       PIDFILE="/var/run/ganesha.pid"
-       CUR_STATE=`get_cluster_fs_state`
-       GANESHA="/usr/bin/$CTDB_CLUSTER_FILESYSTEM_TYPE.ganesha.nfsd"
-       if { read PID < $PIDFILE && \
-           grep "$GANESHA" "/proc/$PID/cmdline" ; } >/dev/null 2>&1 ; then
-               ctdb_counter_init "$service_name"
-       else
-           if [ $CUR_STATE = "active" ]; then
-               echo "Trying fast restart of NFS service"
-               startstop_ganesha restart
-               ctdb_counter_incr "$service_name"
-               ctdb_check_counter "error" "-ge" "6" "$service_name"
-           fi
-       fi
-
-       service_name="nfs-ganesha-$CTDB_CLUSTER_FILESYSTEM_TYPE"_service
-       # check that NFS is posting forward progress
-       if [ $CUR_STATE = "active" -a "$CTDB_NFS_SKIP_KNFSD_ALIVE_CHECK" != "yes" ] ; then
-           MAXREDS=2
-           MAXSTALL=120
-           RESTART=0
-
-           NUMREDS=`ls $GANRECDIR3 | grep "red" | wc -l`
-           LASTONE=`ls -t $GANRECDIR3 | sed 's/_/ /' | awk 'NR > 1 {next} {printf $1} '`
-           # Beware of startup
-           if [ -z $LASTONE ] ; then
-               LASTONE=`date +"%s"`
-           fi
-           TNOW=$(date +"%s")
-           TSTALL=$(($TNOW - $LASTONE))
-           if [ $NUMREDS -ge $MAXREDS ] ; then
-               echo restarting because of $NUMREDS red conditions
-               RESTART=1
-               ctdb_counter_incr "$service_name"
-               ctdb_check_counter "error" "-ge" "6" "$service_name"
-           fi
-           if [ $TSTALL -ge $MAXSTALL ] ; then
-               echo restarting because of $TSTALL second stall
-               RESTART=1
-               ctdb_counter_incr "$service_name"
-               ctdb_check_counter "error" "-ge" "6" "$service_name"
-           fi
-           if [ $RESTART -gt 0 ] ; then
-               startstop_ganesha restart
-           else
-               ctdb_counter_init "$service_name"
-           fi
-       fi
-
+       monitor_ganesha_nfsd
 
        # rquotad is sometimes not started correctly on RHEL5
        # not a critical service so we dont flag the node as unhealthy