fix: production service auto-start via launchd + fix worker retry loop
- Replaced old wrapper script with two launchd plists (server + worker) - Both services auto-start at login via RunAtLoad + KeepAlive - Removed MOMENTRY_FORCE_RETRY=true from .env to prevent infinite retries - Added REDIS_URL and all required env vars to launchd plists - Truncated 3.6GB of oversized logs (2.3G worker + 1.3G launchd stdout) - Deleted 1214 orphaned processor_results records - Updated run-server-3002.sh to manage via launchctl - Removed obsolete wrapper scripts
This commit is contained in:
@@ -1,56 +1,30 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# Start production server on port 3002
|
# Start production server via launchd
|
||||||
# Logs to logs/momentry_3002.log
|
|
||||||
|
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
case "${1:-}" in
|
||||||
cd "$SCRIPT_DIR"
|
stop)
|
||||||
|
echo "Stopping production server and worker..."
|
||||||
# Production environment variables
|
launchctl bootout gui/$(id -u)/com.momentry.server 2>/dev/null || true
|
||||||
export MOMENTRY_OUTPUT_DIR=/Users/accusys/momentry/output
|
launchctl bootout gui/$(id -u)/com.momentry.worker 2>/dev/null || true
|
||||||
export DATABASE_SCHEMA=public
|
echo "Stopped."
|
||||||
export MOMENTRY_REDIS_PREFIX=momentry:
|
;;
|
||||||
export MOMENTRY_SERVER_PORT=3002
|
restart)
|
||||||
# Qdrant credentials for Python subprocesses
|
exec "$0" stop
|
||||||
export QDRANT_URL=http://127.0.0.1:6333
|
exec "$0" start
|
||||||
export QDRANT_API_KEY=Test3200Test3200Test3200
|
;;
|
||||||
|
status)
|
||||||
# Kill existing server on port 3002
|
echo "=== Server ==="
|
||||||
PID=$(lsof -ti :3002 2>/dev/null || true)
|
launchctl list com.momentry.server 2>/dev/null | head -5 || echo "Not loaded"
|
||||||
if [ -n "$PID" ]; then
|
echo "=== Worker ==="
|
||||||
echo "Killing existing server on port 3002 (PID: $PID)"
|
launchctl list com.momentry.worker 2>/dev/null | head -5 || echo "Not loaded"
|
||||||
kill "$PID" 2>/dev/null || true
|
echo "=== Health ==="
|
||||||
sleep 2
|
curl -s --max-time 3 http://localhost:3002/api/v1/health 2>/dev/null || echo "No response"
|
||||||
fi
|
;;
|
||||||
|
*)
|
||||||
# Kill existing worker via PID file
|
echo "Starting production server and worker via launchd..."
|
||||||
if [ -f logs/worker_3002.pid ]; then
|
launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/com.momentry.server.plist 2>/dev/null || launchctl load ~/Library/LaunchAgents/com.momentry.server.plist
|
||||||
WPID=$(cat logs/worker_3002.pid)
|
launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/com.momentry.worker.plist 2>/dev/null || launchctl load ~/Library/LaunchAgents/com.momentry.worker.plist
|
||||||
if kill -0 "$WPID" 2>/dev/null; then
|
echo "Done. Use '$0 status' to check."
|
||||||
echo "Killing existing worker (PID: $WPID)"
|
;;
|
||||||
kill "$WPID" 2>/dev/null || true
|
esac
|
||||||
sleep 1
|
|
||||||
fi
|
|
||||||
rm -f logs/worker_3002.pid
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Build if needed
|
|
||||||
if [ ! -f target/release/momentry ]; then
|
|
||||||
echo "Building release binary..."
|
|
||||||
cargo build --release --bin momentry
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Start server
|
|
||||||
echo "Starting momentry server on port 3002..."
|
|
||||||
./target/release/momentry server --host 0.0.0.0 --port 3002 > logs/momentry_3002.log 2>&1 &
|
|
||||||
echo "Server started (PID: $!)"
|
|
||||||
echo "Logs: logs/momentry_3002.log"
|
|
||||||
|
|
||||||
# Start companion worker
|
|
||||||
echo "Starting momentry worker..."
|
|
||||||
nohup ./target/release/momentry worker --max-concurrent 6 --poll-interval 10 --batch-size 5 > logs/worker_3002.log 2>&1 &
|
|
||||||
WPID=$!
|
|
||||||
echo "$WPID" > logs/worker_3002.pid
|
|
||||||
echo "Worker started (PID: $WPID)"
|
|
||||||
echo "Worker logs: logs/worker_3002.log"
|
|
||||||
|
|||||||
Reference in New Issue
Block a user