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'";;
|
*) die "run: unknown arg '$1'";;
|
||||||
esac
|
esac
|
||||||
done
|
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"
|
echo "$$" > "$STATE/daemon.pid"
|
||||||
trap 'rm -f "$STATE/daemon.pid"; log "run loop stopped"; exit 0' INT TERM
|
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."
|
log "run loop started (max=$MAX_CONCURRENCY, default engine=$DEFAULT_ENGINE). Ctrl-C to stop."
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user