hhorak pushed to community-mysql (f22). "Wait for daemon ends (..more)"

notifications at fedoraproject.org notifications at fedoraproject.org
Thu Apr 9 05:11:39 UTC 2015


>From 9abc7519cebbc870303c9b5af502132a9fcd100c Mon Sep 17 00:00:00 2001
From: Honza Horak <hhorak at redhat.com>
Date: Wed, 18 Feb 2015 21:41:01 +0100
Subject: Wait for daemon ends

  Related: #1072958

Conflicts:
	community-mysql.spec
	mysql-scl-env-check.patch

diff --git a/community-mysql-scripts.patch b/community-mysql-scripts.patch
index 4044867..e7874ce 100644
--- a/community-mysql-scripts.patch
+++ b/community-mysql-scripts.patch
@@ -1,7 +1,7 @@
 diff -rup mysql-5.6.19-orig/scripts/CMakeLists.txt mysql-5.6.19/scripts/CMakeLists.txt
 --- mysql-5.6.19-orig/scripts/CMakeLists.txt	2014-07-22 10:07:12.053410263 +0200
 +++ mysql-5.6.19/scripts/CMakeLists.txt	2014-07-22 10:10:44.102502369 +0200
-@@ -381,6 +381,33 @@ ELSE()
+@@ -381,6 +381,34 @@ ELSE()
      ENDIF()
      INSTALL_SCRIPT(${CMAKE_CURRENT_BINARY_DIR}/${file} COMPONENT ${${file}_COMPONENT})
    ENDFOREACH()
@@ -12,6 +12,7 @@ diff -rup mysql-5.6.19-orig/scripts/CMakeLists.txt mysql-5.6.19/scripts/CMakeLis
 +    mysql.service
 +    mysql-prepare-db-dir
 +    mysql-wait-ready
++    mysql-wait-stop
 +    mysql-check-socket
 +    mysql-check-upgrade
 +    mysql-scripts-common
diff --git a/community-mysql.spec b/community-mysql.spec
index d5cc07a..d046ed3 100644
--- a/community-mysql.spec
+++ b/community-mysql.spec
@@ -100,6 +100,7 @@ Source13:         mysql-wait-ready.sh
 Source14:         mysql-check-socket.sh
 Source15:         mysql-scripts-common.sh
 Source16:         mysql-check-upgrade.sh
+Source17:         mysql-wait-stop.sh
 Source19:         mysql.init.in
 # To track rpmlint warnings
 Source30:         mysql-5.6.10-rpmlintrc
@@ -440,7 +441,7 @@ add_test 'main.upgrade             : unknown'
 popd
 
 cp %{SOURCE2} %{SOURCE3} %{SOURCE10} %{SOURCE11} %{SOURCE12} %{SOURCE13} \
-   %{SOURCE14} %{SOURCE15} %{SOURCE16} %{SOURCE19} %{SOURCE31} scripts
+   %{SOURCE14} %{SOURCE15} %{SOURCE16} %{SOURCE17} %{SOURCE19} %{SOURCE31} scripts
 
 %build
 # fail quickly and obviously if user tries to build as root
@@ -553,6 +554,7 @@ install -D -p -m 755 scripts/mysql.init %{buildroot}%{daemondir}/%{daemon_name}
 # helper scripts for service starting
 install -p -m 755 scripts/mysql-prepare-db-dir %{buildroot}%{_libexecdir}/mysql-prepare-db-dir
 install -p -m 755 scripts/mysql-wait-ready %{buildroot}%{_libexecdir}/mysql-wait-ready
+install -p -m 755 scripts/mysql-wait-stop %{buildroot}%{_libexecdir}/mysql-wait-stop
 install -p -m 755 scripts/mysql-check-socket %{buildroot}%{_libexecdir}/mysql-check-socket
 install -p -m 755 scripts/mysql-check-upgrade %{buildroot}%{_libexecdir}/mysql-check-upgrade
 install -p -m 644 scripts/mysql-scripts-common %{buildroot}%{_libexecdir}/mysql-scripts-common
@@ -894,6 +896,7 @@ fi
 %{daemondir}/%{daemon_name}*
 %{_libexecdir}/mysql-prepare-db-dir
 %{_libexecdir}/mysql-wait-ready
+%{_libexecdir}/mysql-wait-stop
 %{_libexecdir}/mysql-check-socket
 %{_libexecdir}/mysql-check-upgrade
 %{_libexecdir}/mysql-scripts-common
@@ -947,6 +950,8 @@ fi
   Based on https://www.redhat.com/archives/sclorg/2015-February/msg00038.html
 - Check permissions when starting service on RHEL-6
   Resolves: #1194699
+- Wait for daemon ends
+  Related: #1072958
 
 * Mon Feb 23 2015 Honza Horak <hhorak at redhat.com> - 5.6.23-3
 - Expand paths in perl scripts in mysql-test
diff --git a/mysql-wait-stop.sh b/mysql-wait-stop.sh
new file mode 100644
index 0000000..62bde30
--- /dev/null
+++ b/mysql-wait-stop.sh
@@ -0,0 +1,36 @@
+#!/bin/sh
+
+source "`dirname ${BASH_SOURCE[0]}`/mysql-scripts-common"
+
+# This script waits for mysqld to be properly stopped
+# (which can be many seconds in some large load).
+# Running this as ExecStopPost is useful so that starting which is done
+# as part of restart doesn't see the former process still running.
+
+# Wait for the server to properly end the main server
+ret=0
+TIMEOUT=60
+SECONDS=0
+
+if ! [ -f "$pidfile" ]; then
+	exit 0
+fi
+
+MYSQLPID=`cat "$pidfile" 2>/dev/null`
+if [ -z "$MYSQLPID" ] ; then
+	exit 2
+fi
+
+while /bin/true; do
+	# Check process still exists
+	if ! [ -d "/proc/${MYSQLPID}" ] ; then
+	    break
+	fi
+	if [ $SECONDS -gt $TIMEOUT ] ; then
+	    ret=3
+	    break
+	fi
+	sleep 1
+done
+
+exit $ret
diff --git a/mysql.service.in b/mysql.service.in
index 2f09a0a..b9adee8 100644
--- a/mysql.service.in
+++ b/mysql.service.in
@@ -42,6 +42,7 @@ ExecStartPre=@libexecdir@/mysql-prepare-db-dir %n
 ExecStart=@bindir@/mysqld_safe --basedir=@prefix@
 ExecStartPost=@libexecdir@/mysql-wait-ready $MAINPID
 ExecStartPost=@libexecdir@/mysql-check-upgrade
+ExecStopPost=@libexecdir@/mysql-wait-stop
 
 # Give a reasonable amount of time for the server to start up/shut down
 TimeoutSec=300
-- 
cgit v0.10.2


	http://pkgs.fedoraproject.org/cgit/community-mysql.git/commit/?h=f22&id=9abc7519cebbc870303c9b5af502132a9fcd100c


More information about the scm-commits mailing list