From: Martin Schwenke Date: Fri, 17 Dec 2010 05:10:56 +0000 (+1100) Subject: Eventscript functions: new function ctdb_check_counter(). X-Git-Url: http://git.samba.org/?a=commitdiff_plain;h=5b01b7233515669e995e037205796e265643b176;p=sahlberg%2Fctdb.git Eventscript functions: new function ctdb_check_counter(). This should eventually be able to replace ctdb_check_counter_limit() and ctdb_check_counter_equal(), although it doesn't issue warnings like the former. It takes 4 optional arguments: 1. _msg - If "error" then over limit causes an error message and and exit 1. Anything else fails silently but the function returns 1. Default is "error". 2. _op - An integer operator supported by test (e.g. -eq, -ge, -gt). Default is -ge. 3. _limit - Limit for the counter to be used in comparison. Default is $service_fail_limit. 4. _service_name - Used to identify the counter. Default is $service_name. For example: ctdb_check_counter error -ge 5 foo will print a message and exit 1 if the counter for foo is >= 5, whereas ctdb_check_counter check -ge 5 foo will just return 1 if the counter for foo is >= 5, and ctdb_counter_check with print a message and exit 1 if the counter for $service_name is >= $service_fail_limit. Signed-off-by: Martin Schwenke --- diff --git a/config/functions b/config/functions index 39daeb7e..e685c07a 100755 --- a/config/functions +++ b/config/functions @@ -545,6 +545,24 @@ ctdb_check_counter_equal () { fi return 0 } +ctdb_check_counter () { + _msg="${1:-error}" # "error" - anything else is silent on fail + _op="${2:--ge}" # an integer operator supported by test + _limit="${3:-${service_fail_limit}}" + shift 3 + _ctdb_counter_common "$1" + + # unary counting! + _size=$(stat -c "%s" "$_counter_file" 2>/dev/null || echo 0) + if [ $_size $_op $_limit ] ; then + if [ "$_msg" = "error" ] ; then + echo "ERROR: $_limit consecutive failures for $_service_name, marking node unhealthy" + exit 1 + else + return 1 + fi + fi +} ########################################################