diff --git a/scripts/deb/uce.service b/scripts/deb/uce.service index 170955a..c16c65b 100644 --- a/scripts/deb/uce.service +++ b/scripts/deb/uce.service @@ -13,6 +13,7 @@ StateDirectory=uce CacheDirectory=uce ExecStartPre=/usr/bin/mkdir -p /var/cache/uce/work /var/lib/uce/uploads /var/lib/uce/sessions ExecStart=/usr/lib/uce/bin/uce_fastcgi.linux.bin +ExecStartPost=/usr/bin/bash /usr/lib/uce/scripts/systemd/wait-ready.sh Restart=always RestartSec=2 TimeoutStopSec=30 diff --git a/scripts/systemd/uce.service b/scripts/systemd/uce.service index cc5521f..6ceae84 100644 --- a/scripts/systemd/uce.service +++ b/scripts/systemd/uce.service @@ -14,6 +14,7 @@ CacheDirectory=uce ExecStartPre=/usr/bin/mkdir -p /var/cache/uce/work /var/lib/uce/uploads /var/lib/uce/sessions ExecStartPre=/usr/bin/bash /Code/uce.openfu.com/uce/scripts/build_linux.sh ExecStart=/Code/uce.openfu.com/uce/bin/uce_fastcgi.linux.bin +ExecStartPost=/usr/bin/bash /Code/uce.openfu.com/uce/scripts/systemd/wait-ready.sh Restart=always RestartSec=2 TimeoutStopSec=30 diff --git a/scripts/systemd/wait-ready.sh b/scripts/systemd/wait-ready.sh new file mode 100755 index 0000000..d2427dd --- /dev/null +++ b/scripts/systemd/wait-ready.sh @@ -0,0 +1,20 @@ +#!/usr/bin/env bash +set -euo pipefail + +socket_path="/run/uce/cli.sock" +if [[ -r /etc/uce/settings.cfg ]]; then + configured_socket=$(awk -F= '/^[[:space:]]*CLI_SOCKET_PATH[[:space:]]*=/ {gsub(/^[[:space:]]+|[[:space:]]+$/, "", $2); print $2; exit}' /etc/uce/settings.cfg) + if [[ -n "${configured_socket:-}" ]]; then + socket_path="$configured_socket" + fi +fi + +for ((attempt = 0; attempt < 200; attempt++)); do + if [[ -S "$socket_path" ]]; then + exit 0 + fi + sleep 0.05 +done + +echo "UCE CLI socket did not become ready: $socket_path" >&2 +exit 1