Blame SOURCES/mysql-wait-ready.sh

2aefdf
#!/bin/sh
2aefdf
2aefdf
source "`dirname ${BASH_SOURCE[0]}`/mysql-scripts-common"
2aefdf
2aefdf
# This script waits for mysqld to be ready to accept connections
2aefdf
# (which can be many seconds or even minutes after launch, if there's
2aefdf
# a lot of crash-recovery work to do).
2aefdf
# Running this as ExecStartPost is useful so that services declared as
2aefdf
# "After mysqld" won't be started until the database is really ready.
2aefdf
2aefdf
if [ $# -ne 1 ] ; then
2aefdf
	echo "You need to pass daemon pid as an argument for this script."
2aefdf
	exit 20
2aefdf
fi
2aefdf
2aefdf
# Service file passes us the daemon's PID (actually, mysqld_safe's PID)
2aefdf
daemon_pid="$1"
2aefdf
2aefdf
# Wait for the server to come up or for the mysqld process to disappear
2aefdf
ret=0
2aefdf
while /bin/true; do
2aefdf
	# Check process still exists
2aefdf
	if ! [ -d "/proc/${daemon_pid}" ] ; then
2aefdf
	    ret=1
2aefdf
	    break
2aefdf
	fi
2aefdf
	RESPONSE=`@bindir@/mysqladmin --no-defaults --socket="$socketfile" --user=UNKNOWN_MYSQL_USER ping 2>&1`
2aefdf
	mret=$?
2aefdf
	if [ $mret -eq 0 ] ; then
2aefdf
	    break
2aefdf
	fi
2aefdf
	# exit codes 1, 11 (EXIT_CANNOT_CONNECT_TO_SERVICE) are expected,
2aefdf
	# anything else suggests a configuration error
2aefdf
	if [ $mret -ne 1 -a $mret -ne 11 ]; then
2aefdf
            echo "Cannot check for @NICE_PROJECT_NAME@ Daemon startup because of mysqladmin failure." >&2
2aefdf
	    ret=$mret
2aefdf
	    break
2aefdf
	fi
2aefdf
	# "Access denied" also means the server is alive
2aefdf
	echo "$RESPONSE" | grep -q "Access denied for user" && break
2aefdf
2aefdf
	sleep 1
2aefdf
done
2aefdf
2aefdf
exit $ret