1
0
mirror of https://github.com/samba-team/samba.git synced 2025-03-01 04:58:35 +03:00

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

(This used to be ctdb commit 1569a54bb82fc433895ed68f816cf48399ad9d40)
This commit is contained in:
Ronnie Sahlberg 2010-11-17 13:50:56 +11:00
parent 8fe1ec3754
commit 4fe85e5be5
2 changed files with 43 additions and 4 deletions

View File

@ -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

View File

@ -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"