Commit 39005884 authored by unknown's avatar unknown
Browse files

Applied some changes to the mysql.server init script that are already shipped...

Applied some changes to the mysql.server init script that are already shipped as an additional patch
in the 4.1.10a RPMs for SLES9/RHEL3:

- small improvement: use LSB functions to display startup success and failure, if available.
  Fall back to more primitive builtin functions otherwise.
- joined two pieces of code performing the same functionality into one "wait_for_pid" function
- added a "reload" function (LSB requirement)


support-files/mysql.server.sh:
  - small improvement: use LSB functions to display startup success and failure, if available.
    Fall back to builtin functions otherwise.
  - joined two pieces of code performing the same functionality into one "wait_for_pid" function
  - added a "reload" function (LSB requirement)
parent 90697f24
Loading
Loading
Loading
Loading
+44 −17
Original line number Diff line number Diff line
@@ -54,6 +54,17 @@ else
  bindir="$basedir/bin"
fi

#
# Use LSB init script functions for printing messages, if possible
#
lsb_functions="/lib/lsb/init-functions"
if test -f $lsb_functions ; then
  source $lsb_functions
else
  alias log_success_msg="echo \ SUCCESS! "
  alias log_failure_msg="echo \ ERROR! "
fi

PATH=/sbin:/usr/sbin:/bin:/usr/bin:$basedir/bin
export PATH

@@ -75,6 +86,20 @@ parse_arguments() {
  done
}

wait_for_pid () {
  for((i=0; i<35; i++)); do
    sleep 1
    test -s $pid_file && i='' && break
    echo $echo_n ".$echo_c"
  done

  if test -z "$i" ; then
    log_success_msg
  else
    log_failure_msg
  fi
}

# Get arguments from the my.cnf file,
# groups [mysqld] [mysql_server] and [mysql.server]
if test -x ./bin/my_print_defaults
@@ -151,14 +176,17 @@ case "$mode" in
    then
      # Give extra arguments to mysqld with the my.cnf file. This script may
      # be overwritten at next upgrade.
      echo $echo_n "Starting MySQL"
      $bindir/mysqld_safe --datadir=$datadir --pid-file=$pid_file >/dev/null 2>&1 &
      wait_for_pid
      
      # Make lock for RedHat / SuSE
      if test -w /var/lock/subsys
      then
        touch /var/lock/subsys/mysql
      fi
    else
      echo "Can't execute $bindir/mysqld_safe from dir $basedir"
      log_failure_msg "Can't execute $bindir/mysqld_safe"
    fi
    ;;

@@ -168,29 +196,18 @@ case "$mode" in
    if test -s "$pid_file"
    then
      mysqld_pid=`cat $pid_file`
      echo "Killing mysqld with pid $mysqld_pid"
      echo $echo_n "Shutting down MySQL"
      kill $mysqld_pid
      # mysqld should remove the pid_file when it exits, so wait for it.
      wait_for_pid

      sleep 1
      while [ -s $pid_file -a "$flags" != aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ]
      do
	[ -z "$flags" ] && echo $echo_n "Wait for mysqld to exit$echo_c" || echo $echo_n ".$echo_c"
        flags=a$flags
        sleep 1
      done
      if [ -s $pid_file ]
         then echo " gave up waiting!"
      elif [ -n "$flags" ]
         then echo " done"
      fi
      # delete lock for RedHat / SuSE
      if test -f /var/lock/subsys/mysql
      then
        rm -f /var/lock/subsys/mysql
      fi
    else
      echo "No mysqld pid file found. Looked for $pid_file."
      log_failure_msg "MySQL PID file could not be found!"
    fi
    ;;

@@ -201,9 +218,19 @@ case "$mode" in
    $0 start
  ;;

  'reload')
    if test -s "$pid_file" ; then
      mysqld_pid=`cat $pid_file`
      kill -HUP $mysqld_pid && log_success_msg "Reloading service MySQL"
      touch $pid_file
    else
      log_failure_msg "MySQL PID file could not be found!"
    fi
  ;;

  *)
    # usage
    echo "Usage: $0 start|stop|restart"
    echo "Usage: $0 start|stop|restart|reload"
    exit 1
    ;;
esac