summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'scripts')
-rw-r--r--scripts/mysqld_safe.sh32
1 files changed, 32 insertions, 0 deletions
diff --git a/scripts/mysqld_safe.sh b/scripts/mysqld_safe.sh
index 6587a153a3f..e230b10d3b6 100644
--- a/scripts/mysqld_safe.sh
+++ b/scripts/mysqld_safe.sh
@@ -518,6 +518,31 @@ else
fi
plugin_dir="${plugin_dir}${PLUGIN_VARIANT}"
+# A pid file is created for the mysqld_safe process. This file protects the
+# server instance resources during race conditions.
+safe_pid="$DATADIR/mysqld_safe.pid"
+if test -f $safe_pid
+then
+ PID=`cat "$safe_pid"`
+ if @CHECK_PID@
+ then
+ if @FIND_PROC@
+ then
+ log_error "A mysqld_safe process already exists"
+ exit 1
+ fi
+ fi
+ rm -f "$safe_pid"
+ if test -f "$safe_pid"
+ then
+ log_error "Fatal error: Can't remove the mysqld_safe pid file"
+ exit 1
+ fi
+fi
+
+# Insert pid proerply into the pid file.
+ps -e | grep [m]ysqld_safe | awk '{print $1}' | sed -n 1p > $safe_pid
+# End of mysqld_safe pid(safe_pid) check.
# Determine what logging facility to use
@@ -528,6 +553,7 @@ then
if [ $? -ne 0 ]
then
log_error "--syslog requested, but no 'logger' program found. Please ensure that 'logger' is in your PATH, or do not specify the --syslog option to mysqld_safe."
+ rm -f "$safe_pid" # Clean Up of mysqld_safe.pid file.
exit 1
fi
fi
@@ -542,6 +568,7 @@ then
# mysqld does not add ".err" to "--log-error=foo."; it considers a
# trailing "." as an extension
+
if expr "$err_log" : '.*\.[^/]*$' > /dev/null
then
:
@@ -632,6 +659,7 @@ does not exist or is not executable. Please cd to the mysql installation
directory and restart this script from there as follows:
./bin/mysqld_safe&
See http://dev.mysql.com/doc/mysql/en/mysqld-safe.html for more information"
+ rm -f "$safe_pid" # Clean Up of mysqld_safe.pid file.
exit 1
fi
@@ -725,6 +753,7 @@ then
if @FIND_PROC@
then # The pid contains a mysqld process
log_error "A mysqld process already exists"
+ rm -f "$safe_pid" # Clean Up of mysqld_safe.pid file.
exit 1
fi
fi
@@ -735,6 +764,7 @@ then
$pid_file
Please remove it manually and start $0 again;
mysqld daemon not started"
+ rm -f "$safe_pid" # Clean Up of mysqld_safe.pid file.
exit 1
fi
fi
@@ -858,3 +888,5 @@ done
log_notice "mysqld from pid file $pid_file ended"
+rm -f "$safe_pid" # Some Extra Safety. File is deleted
+ # once the mysqld process ends.