From b1653e2221486a366d97ee5d00f5d551e343b541 Mon Sep 17 00:00:00 2001 From: JayShenkar07 Date: Tue, 7 Oct 2025 22:37:11 +0530 Subject: [PATCH 1/2] improved string matching with exit-code-based detection for db connection --- common/startup/check_database_connection.sh | 36 +++++++++------------ 1 file changed, 15 insertions(+), 21 deletions(-) diff --git a/common/startup/check_database_connection.sh b/common/startup/check_database_connection.sh index 10b163a4..0578a65b 100644 --- a/common/startup/check_database_connection.sh +++ b/common/startup/check_database_connection.sh @@ -3,37 +3,31 @@ 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_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 } log_debug "Checking database connection is alive and well..." From 64e9a7d384dc4ec2f678f23eb03593e233690297 Mon Sep 17 00:00:00 2001 From: JayShenkar07 Date: Tue, 7 Oct 2025 22:55:02 +0530 Subject: [PATCH 2/2] log cleanup --- common/startup/check_database_connection.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/common/startup/check_database_connection.sh b/common/startup/check_database_connection.sh index 0578a65b..cda3b34f 100644 --- a/common/startup/check_database_connection.sh +++ b/common/startup/check_database_connection.sh @@ -24,7 +24,6 @@ function check_database_connection { done # Max attempts reached - 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