Commit 75da480f authored by cmiller@zippy.cornsilk.net's avatar cmiller@zippy.cornsilk.net

Merge bk-internal.mysql.com:/home/bk/mysql-5.0-build

into  zippy.cornsilk.net:/home/cmiller/work/mysql/mysql-5.0-build
parents 099ef669 897f772c
...@@ -150,24 +150,47 @@ parse_manager_arguments() { ...@@ -150,24 +150,47 @@ parse_manager_arguments() {
} }
wait_for_pid () { wait_for_pid () {
verb="$1"
manager_pid="$2" # process ID of the program operating on the pid-file
i=0 i=0
avoid_race_condition="by checking again"
while test $i -ne $service_startup_timeout ; do while test $i -ne $service_startup_timeout ; do
sleep 1
case "$1" in case "$verb" in
'created') 'created')
# wait for a PID-file to pop into existence.
test -s $pid_file && i='' && break test -s $pid_file && i='' && break
kill -0 $2 || break # if the program goes away, stop waiting
;; ;;
'removed') 'removed')
# wait for this PID-file to disappear
test ! -s $pid_file && i='' && break test ! -s $pid_file && i='' && break
;; ;;
*) *)
echo "wait_for_pid () usage: wait_for_pid created|removed" echo "wait_for_pid () usage: wait_for_pid created|removed manager_pid"
exit 1 exit 1
;; ;;
esac esac
# if manager isn't running, then pid-file will never be updated
if test -n "$manager_pid"; then
if kill -0 "$manager_pid" 2>/dev/null; then
: # the manager still runs
else
# The manager may have exited between the last pid-file check and now.
if test -n "$avoid_race_condition"; then
avoid_race_condition=""
continue # Check again.
fi
# there's nothing that will affect the file.
log_failure_msg "Manager of pid-file quit without updating file."
return 1 # not waiting any more.
fi
fi
echo $echo_n ".$echo_c" echo $echo_n ".$echo_c"
i=`expr $i + 1` i=`expr $i + 1`
sleep 1
done done
if test -z "$i" ; then if test -z "$i" ; then
...@@ -335,7 +358,7 @@ case "$mode" in ...@@ -335,7 +358,7 @@ case "$mode" in
echo $echo_n "Shutting down MySQL" echo $echo_n "Shutting down MySQL"
kill $mysqlmanager_pid kill $mysqlmanager_pid
# mysqlmanager should remove the pid_file when it exits, so wait for it. # mysqlmanager should remove the pid_file when it exits, so wait for it.
wait_for_pid removed; return_value=$? wait_for_pid removed "$mysqlmanager_pid"; return_value=$?
# delete lock for RedHat / SuSE # delete lock for RedHat / SuSE
if test -f $lock_dir if test -f $lock_dir
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment