@@ -17,6 +17,8 @@ GALERA_INSTANCE="{{.galeraInstanceName}}"
1717MY_CNF=" $HOME /.my.cnf"
1818MYSQL_SOCKET=/var/lib/mysql/mysql.sock
1919
20+ CREDENTIALS_CHECK_TIMEOUT=4
21+
2022# Set up connection parameters based on whether we're connecting remotely or locally
2123if [ -n " ${MYSQL_REMOTE_HOST} " ]; then
2224
@@ -45,22 +47,27 @@ if [ -f "${MY_CNF}" ]; then
4547 SHOULD_VALIDATE=true
4648 fi
4749
48- if [ " ${SHOULD_VALIDATE} " = " true" ] && mysql ${MYSQL_CONN_PARAMS} -uroot -p" ${PASSWORD} " -e " SELECT 1;" > /dev/null 2>&1 ; then
49- # Credentials are still valid, use cached values
50+ credentials_check=1
51+ if [ " ${SHOULD_VALIDATE} " = " true" ]; then
52+ timeout ${CREDENTIALS_CHECK_TIMEOUT} mysql ${MYSQL_CONN_PARAMS} -uroot -p" ${PASSWORD} " -e " SELECT 1;" > /dev/null 2>&1
53+ credentials_check=$?
54+ fi
5055
51- MYSQL_PWD=" ${PASSWORD} "
52- DB_ROOT_PASSWORD=" ${PASSWORD} "
53- export MYSQL_PWD
54- export DB_ROOT_PASSWORD
55- return 0 2> /dev/null || exit 0
56+ if [ " ${SHOULD_VALIDATE} " = " true" ] && [ $credentials_check -eq 124 ]; then
57+ # MySQL validation timed out, assume cache is valid and will be validated on next probe
58+ export MYSQL_PWD=" ${PASSWORD} "
59+ export DB_ROOT_PASSWORD=" ${PASSWORD} "
60+ return 0
61+ elif [ " ${SHOULD_VALIDATE} " = " true" ] && [ $credentials_check -eq 0 ]; then
62+ # Credentials are still valid, use cached values
63+ export MYSQL_PWD=" ${PASSWORD} "
64+ export DB_ROOT_PASSWORD=" ${PASSWORD} "
65+ return 0
5666 elif [ " ${USE_SOCKET} " = " true" ] && [ ! -S " ${MYSQL_SOCKET} " ]; then
5767 # MySQL not running locally, assume cache is valid and will be validated on next probe
58-
59- MYSQL_PWD=" ${PASSWORD} "
60- DB_ROOT_PASSWORD=" ${PASSWORD} "
61- export MYSQL_PWD
62- export DB_ROOT_PASSWORD
63- return 0 2> /dev/null || exit 0
68+ export MYSQL_PWD=" ${PASSWORD} "
69+ export DB_ROOT_PASSWORD=" ${PASSWORD} "
70+ return 0
6471 fi
6572 fi
6673 # If we get here, credentials are invalid, fall through to refresh
0 commit comments