diff --git a/install/production-filesystem/entrypoint.sh b/install/production-filesystem/entrypoint.sh index 87af9dc7..db83b750 100755 --- a/install/production-filesystem/entrypoint.sh +++ b/install/production-filesystem/entrypoint.sh @@ -290,8 +290,6 @@ add_service "${SYSTEM_SERVICES}/start-backend.sh" "python3" # Useful for devcontainer debugging where individual services need to be debugged if [ "${NETALERTX_DEBUG:-0}" -eq 1 ]; then echo "NETALERTX_DEBUG is set to 1, will not shut down other services if one fails." - wait - exit $? fi ################################################################################ @@ -316,10 +314,25 @@ while [ -n "${SERVICES}" ]; do if ! is_pid_active "${pid}"; then wait "${pid}" 2>/dev/null status=$? + + # Handle intentional backend restart + if [ "${name}" = "python3" ] && [ -f "/tmp/backend_restart_pending" ]; then + echo "🔄 Backend restart requested via marker file." + rm -f "/tmp/backend_restart_pending" + remove_service "${pid}" + add_service "${SYSTEM_SERVICES}/start-backend.sh" "python3" + continue + fi + FAILED_STATUS=$status FAILED_NAME="${name}" remove_service "${pid}" - handle_exit + + if [ "${NETALERTX_DEBUG:-0}" -eq 1 ]; then + echo "⚠️ Service ${name} exited with status ${status}. Debug mode active - continuing." + else + handle_exit + fi fi done diff --git a/install/production-filesystem/services/scripts/cron_script.sh b/install/production-filesystem/services/scripts/cron_script.sh index 2d91f4b9..12402de2 100755 --- a/install/production-filesystem/services/scripts/cron_script.sh +++ b/install/production-filesystem/services/scripts/cron_script.sh @@ -5,9 +5,12 @@ export INSTALL_DIR=/app # Check if there are any entries with cron_restart_backend if grep -q "cron_restart_backend" "${LOG_EXECUTION_QUEUE}"; then - killall python3 - sleep 2 - /services/start-backend.sh >/dev/null 2>&1 & + echo "$(date): Restarting backend triggered by cron_restart_backend" + + # Create marker for entrypoint.sh to restart the service instead of killing the container + touch /tmp/backend_restart_pending + + killall python3 || echo "killall python3 failed or no process found" # Remove all lines containing cron_restart_backend from the log file # Atomic replacement with temp file