export CTDB_BASE="/etc/ctdb"
}
+[ -z "$CTDB_VARDIR" ] && {
+ export CTDB_VARDIR="/var/ctdb"
+}
+
. $CTDB_BASE/functions
loadconfig network
loadconfig ctdb
return $1
}
+wait_until_ready () {
+ _timeout="${1:-10}" # default is 10 seconds
+
+ _count=0
+ while ! ctdb ping >/dev/null 2>&1 ; do
+ if [ $_count -ge $_timeout ] ; then
+ return 1
+ fi
+ sleep 1
+ _count=$(($_count + 1))
+ done
+}
+
ctdbd=${CTDBD:-/usr/sbin/ctdbd}
start() {
ctdb ping >/dev/null 2>&1 && {
echo $"CTDB is already running"
- return 1
+ return 0
}
build_ctdb_options
;;
suse)
eval startproc $ctdbd "$CTDB_OPTIONS"
- rc_status -v
RETVAL=$?
;;
redhat)
eval $ctdbd "$CTDB_OPTIONS"
RETVAL=$?
- [ $RETVAL -eq 0 ] && success || failure
- echo
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/ctdb || RETVAL=1
;;
debian)
;;
esac
- sleep 1
+ if [ $RETVAL -eq 0 ] ; then
+ if wait_until_ready ; then
+ set_ctdb_variables
+ else
+ RETVAL=1
+ pkill -9 -f $ctdbd >/dev/null 2>&1
+ fi
+ fi
- set_ctdb_variables
+ case $init_style in
+ suse)
+ set_retval $RETVAL
+ rc_status -v
+ ;;
+ redhat)
+ [ $RETVAL -eq 0 ] && success || failure
+ echo
+ ;;
+ esac
return $RETVAL
-}
+}
stop() {
echo -n $"Shutting down ctdbd service: "
restart() {
stop
start
-}
+}
status() {
echo -n $"Checking for ctdbd service: "
rc_status -v
;;
redhat)
- echo ""
+ if [ -f /var/lock/subsys/ctdb ]; then
+ echo $"ctdb dead but subsys locked"
+ RETVAL=2
+ else
+ echo $"ctdb is stopped"
+ RETVAL=3
+ fi
;;
esac
return $RETVAL
stop)
stop
;;
- restart|reload)
+ restart|reload|force-reload)
restart
;;
status)
status
;;
- condrestart)
+ condrestart|try-restart)
ctdb status > /dev/null && restart || :
;;
cron)
ctdb status > /dev/null || restart
;;
*)
- echo $"Usage: $0 {start|stop|restart|status|cron|condrestart}"
+ echo $"Usage: $0 {start|stop|restart|reload|force-reload|status|cron|condrestart|try-restart}"
exit 1
esac