feat(agent-queue): refuse a second run when a daemon is already active
cmd_run now checks daemon.pid liveness up front: if a run loop is alive it exits with an error (protecting the single-launcher invariant locking depends on); a stale daemon.pid (dead pid) is cleared and the run proceeds.
This commit is contained in:
parent
11935d0539
commit
a849a30e11
@ -340,6 +340,14 @@ cmd_run() {
|
||||
*) die "run: unknown arg '$1'";;
|
||||
esac
|
||||
done
|
||||
# Refuse to start a second run loop against the same queue — two daemons would
|
||||
# break the single-launcher invariant that per-cwd locking relies on.
|
||||
local dpid=""
|
||||
[[ -f "$STATE/daemon.pid" ]] && dpid=$(cat "$STATE/daemon.pid" 2>/dev/null)
|
||||
if [[ -n "$dpid" ]] && kill -0 "$dpid" 2>/dev/null; then
|
||||
die "a run loop is already active (pid $dpid). Use 'stop' first, or a different AGENT_QUEUE_ROOT."
|
||||
fi
|
||||
[[ -n "$dpid" ]] && log "clearing stale daemon.pid ($dpid)"
|
||||
echo "$$" > "$STATE/daemon.pid"
|
||||
trap 'rm -f "$STATE/daemon.pid"; log "run loop stopped"; exit 0' INT TERM
|
||||
log "run loop started (max=$MAX_CONCURRENCY, default engine=$DEFAULT_ENGINE). Ctrl-C to stop."
|
||||
|
||||
Loading…
Reference in New Issue
Block a user