baa-conductor


baa-conductor / bugs / archive
codex@macbookpro  ·  2026-03-27

FIX-BUG-012.md

 1# FIX-BUG-012: browser-request-policy waiter 死锁
 2
 3## 执行状态
 4
 5- 已完成(2026-03-27,代码 + 自动化验证已落地)
 6
 7## 关联 Bug
 8
 9BUG-012-browser-request-policy-waiter-deadlock.md
10
11## 实际修改文件
12
13- `apps/conductor-daemon/src/browser-request-policy.ts`
14- `apps/conductor-daemon/src/index.test.js`
15
16## 实际修改
17
18-`BrowserRequestPolicyControllerOptions` 中补了 `clearTimeoutImpl`,方便测试环境精确控制 timer
19- 新增 `BROWSER_REQUEST_WAITER_TIMEOUT_MS = 120_000`
20- 新增统一的 `waitForWaiter(...)`,负责 waiter 入队、超时、移除和 reject
21- `acquireTargetSlot(...)``acquirePlatformAdmission(...)` 都改为在超时后抛出 `waiter_timeout`
22-`index.test.js` 中新增 target slot timeout、platform admission timeout 和 HTTP 503 返回路径测试
23
24## 非目标 / 剩余风险
25
26- 本轮没有实现 stale `inFlight` 自动回收
27- 如果未来真的出现长期不恢复的 lease 泄漏,同一 `target` 的请求会超时失败,而不是自动自愈
28- 如需继续增强,应单开任务补 stale `inFlight` 清扫机制
29
30## 验收标准
31
321. `pnpm -C /Users/george/code/baa-conductor -F @baa-conductor/conductor-daemon build` 通过
332. `node --test /Users/george/code/baa-conductor/apps/conductor-daemon/src/index.test.js` 通过(`31/31`)
343. waiter 泄漏场景现在会返回明确错误,而不是永久挂起