fix(id_order): keep an orphaned marker blocking while its herdr session is alive (Issue #63)
A create/resume killed after spawning its pane but before registering its row left a marker whose owner pid was dead; the next same-cwd waiter pruned it on the pid alone and could start a second session that discovers the same workspace conversation id (PR #69 review P1). - Markers record the herdr server. A dead owner's marker is pruned only once its row is registered for the attempt (running, newer epoch: the row decides) or `_herdr has-session` reports the session gone; an unanswered probe counts as alive. On timeout the kill-session command is printed. - A live marker of another process for the waiter's own session name is kept and blocks instead of being deleted; the waiter's own pid's markers go. - Tests: orphan / registered / gone / same-session / missing pane pid cases, and a create-level reproduction against mock herdr (fails before the fix). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
a907cc5294
commit
ede9c62be3
3 files changed
+216
-14
No files matched your search
@@ -2043,7 +2043,8 @@ mam_id_order_wait() {
|
||||
local workspace="$1" agent="$2" session_name="$3" uuid="${4:-}"
|
||||
local abs; abs="$(mam_abs_workspace "$workspace")"
|
||||
env_python "$AGENT_SESSIONS_YAML" wait --cwd "$abs" --agent "$agent" \
|
||||
--session "$session_name" --owner-pid "$$" --uuid "$uuid" <<'PYEOF'
|
||||
--session "$session_name" --owner-pid "$$" --uuid "$uuid" \
|
||||
--herdr-server "${HERDR_SESSION_NAME:-}" <<'PYEOF'
|
||||
import sys
|
||||
from lib_py.agents.id_order import main
|
||||
sys.exit(main(sys.argv[1:]))
|
||||
|
||||
Reference in new issue
Block a user