diff --git a/common/startup/check_database_connection.sh b/common/startup/check_database_connection.sh index 10b163a4..cda3b34f 100644 --- a/common/startup/check_database_connection.sh +++ b/common/startup/check_database_connection.sh @@ -3,37 +3,30 @@ source /startup/logger.sh function check_database_connection { - local IS_MYSQL_ALIVE=false local FAILURE_COUNT=0 local MAX_FAILURE_COUNT=31 - while [[ "${IS_MYSQL_ALIVE}" != "mysqld is alive" ]]; do + log_debug "Starting MySQL connection check (max attempts: ${MAX_FAILURE_COUNT})..." + + while [[ $FAILURE_COUNT -lt $MAX_FAILURE_COUNT ]]; do FAILURE_COUNT=$((FAILURE_COUNT + 1)) - if [[ $FAILURE_COUNT -gt $MAX_FAILURE_COUNT ]]; then - log_startup_error_header - log_error "MySQL is not responding after ${MAX_FAILURE_COUNT} attempts. Exiting." - log_error "Please ensure the MySQL server is running and accessible from this container." - exit 1 - fi - if [[ "${IS_MYSQL_ALIVE}" =~ "error" ]]; then - log_error "MySQL response contained error: ${IS_MYSQL_ALIVE}" - log "We will continue to retry the connection." + # Try the connection using exit code + if mysqladmin ping --host="${MAUTIC_DB_HOST}" --port="${MAUTIC_DB_PORT}" \ + --user="${MAUTIC_DB_USER}" --password="${MAUTIC_DB_PASSWORD}" &>/dev/null; then + log_debug "MySQL is alive and reachable on attempt ${FAILURE_COUNT}/${MAX_FAILURE_COUNT}!" + return 0 else - log "MySQL is not ready yet, waiting..." + log "MySQL is not ready yet, waiting... Attempt ${FAILURE_COUNT}/${MAX_FAILURE_COUNT}" fi - sleep 1 - # try the connection - log_debug "Checking DB connection to ${MAUTIC_DB_HOST}:${MAUTIC_DB_PORT} with user ${MAUTIC_DB_USER}" - IS_MYSQL_ALIVE=$(mysqladmin --host="${MAUTIC_DB_HOST}" --port="${MAUTIC_DB_PORT}" --user="${MAUTIC_DB_USER}" --password="${MAUTIC_DB_PASSWORD}" ping 2>&1) + sleep 1 done - # we either maxed our connection attempts or we got a successful response - log_debug "MySQL connection check response: ${IS_MYSQL_ALIVE}" - if [[ "${IS_MYSQL_ALIVE}" == "mysqld is alive" ]]; then - log_debug "MySQL is alive and well." - fi + # Max attempts reached + log_error "MySQL is not responding after ${MAX_FAILURE_COUNT} attempts. Exiting." + log_error "Please ensure the MySQL server is running and accessible from this container." + exit 1 } log_debug "Checking database connection is alive and well..."