[mariadb-galera] Wait for daemon ends

Honza Horak hhorak at fedoraproject.org
Wed Mar 11 22:54:59 UTC 2015


commit ca9a2308c5b825fd60791ea531717cddc6c5ae09
Author: Honza Horak <hhorak at redhat.com>
Date:   Wed Feb 18 16:50:54 2015 +0100

    Wait for daemon ends
    
      Resolves: #1072958
    
    Conflicts:
    	mariadb-scl-env-check.patch
    	mariadb.spec
    	mariadb-galera.spec
    	mariadb-scripts.patch

 mariadb-galera.spec   |  9 +++++++--
 mariadb-scripts.patch |  9 +++++----
 mysql-wait-stop.sh    | 36 ++++++++++++++++++++++++++++++++++++
 mysql.service.in      |  1 +
 4 files changed, 49 insertions(+), 6 deletions(-)
---
diff --git a/mariadb-galera.spec b/mariadb-galera.spec
index 81e43fe..c30f493 100644
--- a/mariadb-galera.spec
+++ b/mariadb-galera.spec
@@ -103,7 +103,7 @@
 
 Name:             mariadb-galera
 Version:          %{compatver}.%{bugfixver}
-Release:          1%{?with_debug:.debug}%{?dist}
+Release:          2%{?with_debug:.debug}%{?dist}
 Epoch:            1
 
 Summary:          A community developed branch of MySQL
@@ -132,6 +132,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
 Source50:         rh-skipped-tests-base.list
 Source51:         rh-skipped-tests-arm.list
@@ -551,7 +552,7 @@ cat %{SOURCE52} | tee -a mysql-test/rh-skipped-tests.list
 %endif
 
 cp %{SOURCE2} %{SOURCE3} %{SOURCE10} %{SOURCE11} %{SOURCE12} %{SOURCE13} \
-   %{SOURCE14} %{SOURCE15} %{SOURCE16} %{SOURCE19} \
+   %{SOURCE14} %{SOURCE15} %{SOURCE16} %{SOURCE17} %{SOURCE19} \
    %{SOURCE70} scripts
 
 %build
@@ -713,6 +714,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
@@ -1123,6 +1125,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
@@ -1192,6 +1195,8 @@ fi
 - Do not create test database by default
   Related: #1194611
 - Added variable for turn off skipping some tests
+- Wait for daemon ends
+  Resolves: #1072958
 
 * Sun Jan 25 2015 Honza Horak <hhorak at redhat.com> - 1:10.0.15-3
 - Do not create log file in post script
diff --git a/mariadb-scripts.patch b/mariadb-scripts.patch
index 171c0d6..52bdedc 100644
--- a/mariadb-scripts.patch
+++ b/mariadb-scripts.patch
@@ -1,7 +1,7 @@
-diff -up mariadb-10.0.12/scripts/CMakeLists.txt.systemd mariadb-10.0.12/scripts/CMakeLists.txt
---- mariadb-10.0.12/scripts/CMakeLists.txt.systemd	2014-07-21 10:49:58.491470586 +0200
-+++ mariadb-10.0.12/scripts/CMakeLists.txt	2014-07-21 14:21:22.673329708 +0200
-@@ -368,6 +368,33 @@ ELSE()
+diff -up mariadb-10.0.16/scripts/CMakeLists.txt.systemd mariadb-10.0.16/scripts/CMakeLists.txt
+--- mariadb-10.0.16/scripts/CMakeLists.txt.systemd	2015-01-25 16:21:37.000000000 +0100
++++ mariadb-10.0.16/scripts/CMakeLists.txt	2015-02-03 10:53:05.261790495 +0100
+@@ -367,6 +367,34 @@ ELSE()
        COMPONENT ${${file}_COMPONENT}
       )
    ENDFOREACH()
@@ -12,6 +12,7 @@ diff -up mariadb-10.0.12/scripts/CMakeLists.txt.systemd mariadb-10.0.12/scripts/
 +    mysql.service
 +    mysql-prepare-db-dir
 +    mysql-wait-ready
++    mysql-wait-stop
 +    mysql-check-socket
 +    mysql-check-upgrade
 +    mysql-scripts-common
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 a33df16..3f8ce06 100644
--- a/mysql.service.in
+++ b/mysql.service.in
@@ -39,6 +39,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


More information about the scm-commits mailing list