summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xctdb/config/ctdb.init14
-rwxr-xr-xctdb/config/events.d/00.ctdb37
2 files changed, 30 insertions, 21 deletions
diff --git a/ctdb/config/ctdb.init b/ctdb/config/ctdb.init
index 581844d34c..372affba71 100755
--- a/ctdb/config/ctdb.init
+++ b/ctdb/config/ctdb.init
@@ -214,16 +214,6 @@ EOF
done
}
-set_ctdb_variables () {
- # set any tunables from the config file
- set | grep ^CTDB_SET_ | cut -d_ -f3- |
- while read v; do
- varname=`echo $v | cut -d= -f1`
- value=`echo $v | cut -d= -f2`
- ctdb setvar $varname $value || RETVAL=1
- done || exit 1
-}
-
set_retval() {
return $1
}
@@ -304,9 +294,7 @@ start() {
esac
if [ $RETVAL -eq 0 ] ; then
- if wait_until_ready ; then
- set_ctdb_variables
- else
+ if ! wait_until_ready ; then
RETVAL=1
pkill -9 -f $ctdbd >/dev/null 2>&1
fi
diff --git a/ctdb/config/events.d/00.ctdb b/ctdb/config/events.d/00.ctdb
index 2a48afb8e2..2f2116d061 100755
--- a/ctdb/config/events.d/00.ctdb
+++ b/ctdb/config/events.d/00.ctdb
@@ -35,6 +35,30 @@ update_config_from_tdb() {
fi
}
+set_ctdb_variables () {
+ # set any tunables from the config file
+ set | grep ^CTDB_SET_ | cut -d_ -f3- |
+ while read v; do
+ varname=`echo $v | cut -d= -f1`
+ value=`echo $v | cut -d= -f2`
+ ctdb setvar $varname $value || return 1
+ echo "Set $varname to $value"
+ done
+}
+
+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
+}
+
ctdb_check_args "$@"
case "$1" in
@@ -51,14 +75,11 @@ case "$1" in
;;
setup)
- # set any tunables from the config file
- set | grep ^CTDB_SET_ | cut -d_ -f3- |
- while read v; do
- varname=`echo $v | cut -d= -f1`
- value=`echo $v | cut -d= -f2`
- ctdb setvar $varname $value || exit 1
- echo "Set $varname to $value"
- done || exit 1
+ # Make sure CTDB daemon is ready to process requests
+ if wait_until_ready ; then
+ # set any tunables from the config file
+ set_ctdb_variables
+ fi || exit 1
;;
startup)