diff --git a/monitor_lwd.sh b/monitor_lwd.sh index fdb8c6f..1848e39 100755 --- a/monitor_lwd.sh +++ b/monitor_lwd.sh @@ -10,9 +10,10 @@ set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" LWD_BIN="$SCRIPT_DIR/lightwalletd" -LWD_ARGS="-bind-addr lite.dragonx.is:9069 -conf-file $HOME/.hush/DRAGONX/DRAGONX.conf -no-tls -lag-min 4 -lag-max 12 -lag-window 30" +LWD_ARGS="-bind-addr lite.dragonx.is:9069 -conf-file $HOME/.hush/DRAGONX/DRAGONX.conf -no-tls -lag-min 4 -lag-max 12 -lag-window 30 -cache-size 5000" LOGFILE="$SCRIPT_DIR/lwd-monitor.log" PIDFILE="/tmp/lwd-monitor.pid" +STOPPING=0 RESTART_DELAY=5 # seconds to wait before restarting after a crash MAX_RAPID_RESTARTS=5 # max restarts within the rapid window before backing off RAPID_WINDOW=120 # seconds — if this many restarts happen within this window, back off @@ -29,6 +30,7 @@ log() { } cleanup() { + STOPPING=1 log "${YELLOW}Monitor shutting down...${NC}" if [[ -n "${LWD_PID:-}" ]] && kill -0 "$LWD_PID" 2>/dev/null; then log "Stopping lightwalletd (PID $LWD_PID)..." @@ -75,6 +77,7 @@ log "Args: $LWD_ARGS" restart_times=() LWD_PID="" +STOPPING=0 while true; do # Start lightwalletd @@ -84,12 +87,12 @@ while true; do log "lightwalletd started with PID $LWD_PID" # Wait for it to exit - wait "$LWD_PID" || true - EXIT_CODE=$? + EXIT_CODE=0 + wait "$LWD_PID" || EXIT_CODE=$? LWD_PID="" - if [[ $EXIT_CODE -eq 0 ]]; then - log "${YELLOW}lightwalletd exited cleanly (code 0). Not restarting.${NC}" + if [[ $STOPPING -eq 1 ]]; then + log "${YELLOW}lightwalletd stopped on request (code $EXIT_CODE). Not restarting.${NC}" break fi