From bdc02ce882549c4d13e890019891ae13b759d23f Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 11 Dec 2025 12:36:52 +0000 Subject: [PATCH] Make clamd startup timeout configurable and add readiness check Co-authored-by: DerLinkman <62480600+DerLinkman@users.noreply.github.com> --- data/Dockerfiles/clamd/clamd.sh | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/data/Dockerfiles/clamd/clamd.sh b/data/Dockerfiles/clamd/clamd.sh index 6b5c90969..f0504dc89 100755 --- a/data/Dockerfiles/clamd/clamd.sh +++ b/data/Dockerfiles/clamd/clamd.sh @@ -98,9 +98,26 @@ BACKGROUND_TASKS+=($CLAMD_PID) # Give clamd time to start up, especially with limited resources # This grace period allows clamd to initialize fully before health checks begin -STARTUP_GRACE_PERIOD=600 # 10 minutes in seconds -echo "Waiting ${STARTUP_GRACE_PERIOD} seconds for clamd to start up..." -sleep ${STARTUP_GRACE_PERIOD} +# Can be configured via CLAMD_STARTUP_TIMEOUT environment variable +STARTUP_GRACE_PERIOD=${CLAMD_STARTUP_TIMEOUT:-600} # Default: 10 minutes in seconds +echo "Waiting up to ${STARTUP_GRACE_PERIOD} seconds for clamd to start up..." + +# Wait for clamd to be ready or until timeout +ELAPSED=0 +POLL_INTERVAL=10 +while [ ${ELAPSED} -lt ${STARTUP_GRACE_PERIOD} ]; do + # Check if clamd is responsive by attempting to connect + if echo "PING" | nc -w 1 127.0.0.1 3310 2>/dev/null | grep -q "PONG"; then + echo "clamd is ready after ${ELAPSED} seconds" + break + fi + sleep ${POLL_INTERVAL} + ELAPSED=$((ELAPSED + POLL_INTERVAL)) +done + +if [ ${ELAPSED} -ge ${STARTUP_GRACE_PERIOD} ]; then + echo "Warning: clamd startup grace period of ${STARTUP_GRACE_PERIOD} seconds elapsed" +fi while true; do for bg_task in ${BACKGROUND_TASKS[*]}; do