The fcntl helper now does a more meaningful check.
Signed-off-by: Martin Schwenke <martin@meltin.net>
Reviewed-by: Amitay Isaacs <amitay@gmail.com>
case "$1" in
init)
- ctdb_counter_init
-
if [ -n "$CTDB_RECOVERY_LOCK" ] ; then
d=$(dirname "$CTDB_RECOVERY_LOCK")
mkdir -vp "$d"
fi
;;
-
-monitor)
- # Early exit if not using a reclock file
- [ -n "$CTDB_RECOVERY_LOCK" ] || exit 0
-
- # Try to stat the reclock file as a background process so that
- # we don't block in case the cluster filesystem is unavailable
- (
- if stat "$CTDB_RECOVERY_LOCK" ; then
- # We could stat the file, reset the counter
- ctdb_counter_init
- fi
- ) >/dev/null 2>&1 &
-
- ctdb_counter_incr
- num_fails=$(ctdb_counter_get)
- if [ "$num_fails" -ge 200 ] ; then
- echo "Reclock file \"$CTDB_RECOVERY_LOCK\" can not be accessed. Shutting down."
- df
- sleep 1
- $CTDB shutdown
- exit 1
- elif [ "$num_fails" -ge 4 ] ; then
- die "ERROR: ${num_fails} consecutive failures checking reclock"
- fi
- ;;
esac
exit 0
+++ /dev/null
-#!/bin/sh
-
-. "${TEST_SCRIPTS_DIR}/unit.sh"
-
-define_test "unset, check no-op"
-
-setup ""
-
-ok_null
-simple_test
+++ /dev/null
-#!/bin/sh
-
-. "${TEST_SCRIPTS_DIR}/unit.sh"
-
-define_test "set to helper, check no-op"
-
-setup "!/some/recover/lock/helper foo"
-
-ok_null
-simple_test
+++ /dev/null
-#!/bin/sh
-
-. "${TEST_SCRIPTS_DIR}/unit.sh"
-
-define_test "set, exists"
-
-setup
-
-ok_null
-simple_test
+++ /dev/null
-#!/bin/sh
-
-. "${TEST_SCRIPTS_DIR}/unit.sh"
-
-define_test "set, doesn't exist, 4 times"
-
-setup
-rm -f "$CTDB_RECOVERY_LOCK"
-
-ok_null
-simple_test
-simple_test
-simple_test
-
-required_result 1 <<EOF
-ERROR: 4 consecutive failures checking reclock
-EOF
-simple_test
+++ /dev/null
-#!/bin/sh
-
-. "${TEST_SCRIPTS_DIR}/unit.sh"
-
-define_test "set, doesn't exist, 4 times"
-
-setup
-rm -f "$CTDB_RECOVERY_LOCK"
-
-ok_null
-for i in $(seq 1 3) ; do
- simple_test
-done
-
-for i in $(seq 4 199) ; do
- required_result 1 <<EOF
-ERROR: ${i} consecutive failures checking reclock
-EOF
- simple_test
-done
-
-required_result 1 <<EOF
-Reclock file "${CTDB_RECOVERY_LOCK}" can not be accessed. Shutting down.
-Filesystem 1024-blocks Used Available Capacity Mounted on
-/dev/sda1 1000000 100000 900000 10% /
-CTDB says BYE!
-EOF
-simple_test
-cleanup_reclock ()
-{
- _pattern="${script_dir}/${script}"
- while pgrep -f "$_pattern" >/dev/null ; do
- echo "Waiting for backgrounded ${script} to exit..."
- (FAKE_SLEEP_REALLY=yes sleep 1)
- done
-}
-
setup ()
{
if [ $# -eq 1 ] ; then
recovery lock = $CTDB_RECOVERY_LOCK
EOF
fi
-
- test_cleanup cleanup_reclock
}