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 泄漏场景现在会返回明确错误,而不是永久挂起