${INSTALLCMD} -m 644 config/events.d/README $(DESTDIR)$(docdir)/ctdb/README.eventscripts
${INSTALLCMD} -m 644 doc/recovery-process.txt $(DESTDIR)$(docdir)/ctdb/recovery-process.txt
${INSTALLCMD} -m 755 config/events.d/00.ctdb $(DESTDIR)$(etcdir)/ctdb/events.d
+ ${INSTALLCMD} -m 755 config/events.d/01.reclock $(DESTDIR)$(etcdir)/ctdb/events.d
${INSTALLCMD} -m 755 config/events.d/10.interface $(DESTDIR)$(etcdir)/ctdb/events.d
${INSTALLCMD} -m 755 config/events.d/11.natgw $(DESTDIR)$(etcdir)/ctdb/events.d
${INSTALLCMD} -m 755 config/events.d/11.routing $(DESTDIR)$(etcdir)/ctdb/events.d
--- /dev/null
+#!/bin/sh
+# script to check accessibility to the reclock file on a node
+
+. $CTDB_BASE/functions
+loadconfig ctdb
+
+cmd="$1"
+shift
+
+PATH=/usr/bin:/bin:/usr/sbin:/sbin:$PATH
+
+# The size of this file represents the number of intervals that have
+# passed when we have tried to but failed to stat the reclock file.
+# after third failure the node becomes unhealthy
+# after the tenth failure the node we shutdown ctdbd
+RECLOCKCOUNT="$CTDB_BASE/state/reclock-fail-count"
+
+case $cmd in
+ startup)
+ echo -n > $RECLOCKCOUNT
+ ;;
+
+ monitor)
+ echo -n 1 >> $RECLOCKCOUNT
+
+ COUNT=`ls -ln $RECLOCKCOUNT | cut -d" " -f5`
+ [ $COUNT -gt 9 ] && {
+ echo "Reclock file can not be accessed. Shutting down."
+ sleep 1
+ ctdb shutdown
+ }
+
+ RECLOCKFILE=`ctdb -Y getreclock`
+ [ -z $RECLOCKFILE ] && {
+ # we are not using a reclock file
+ echo -n > $RECLOCKCOUNT
+ exit 0
+ }
+
+ # try stat the reclock file as a background process
+ # so that we dont block in case the cluster filesystem is unavailable
+ (
+ stat $RECLOCKFILE
+ [ "$?" -eq 0 ] && {
+ # we could stat the file, reset the counter
+ echo -n > $RECLOCKCOUNT
+ }
+ ) >/dev/null 2>/dev/null &
+
+
+ [ $COUNT -gt 2 ] && {
+ echo "Reclock file can not be accessed. Mark node UNHEALTHY."
+ exit 1;
+ }
+ ;;
+esac
+
+exit 0
%{_docdir}/ctdb/README.eventscripts
%{_docdir}/ctdb/recovery-process.txt
%{_sysconfdir}/ctdb/events.d/00.ctdb
+%{_sysconfdir}/ctdb/events.d/01.reclock
%{_sysconfdir}/ctdb/events.d/10.interface
%{_sysconfdir}/ctdb/events.d/11.natgw
%{_sysconfdir}/ctdb/events.d/11.routing