baa-conductor


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

FIX-BUG-011.md

 1# FIX-BUG-011: writeHttpResponse drain handler 永久挂起
 2
 3## 执行状态
 4
 5- 已完成(2026-03-27,代码 + 自动化验证已落地)
 6
 7## 关联 Bug
 8
 9BUG-011-writeHttpResponse-drain-handler-hangs.md
10
11## 实际修改文件
12
13- `apps/conductor-daemon/src/index.ts`
14- `apps/conductor-daemon/src/index.test.js`
15
16## 实际修改
17
18-`index.ts` 中新增 `awaitWritableDrainOrClose(...)`,统一处理 `drain` / `close` / `error`
19- `writeHttpResponse()` 的 body 写入和 `streamBody` 写入都改为复用该 helper
20- 当连接已销毁时,不再继续写入,也不会在销毁连接上调用 `response.end()`
21-`index.test.js` 中新增 3 条专项测试,覆盖 body 背压关闭、stream 背压关闭和正常 drain 恢复写入
22
23## 验证结果
24
251. `pnpm -C /Users/george/code/baa-conductor -F @baa-conductor/conductor-daemon build` 通过
262. `node --test /Users/george/code/baa-conductor/apps/conductor-daemon/src/index.test.js` 通过(`31/31`)
27
28## 验收标准
29
301. 背压后客户端断开时,请求处理不会永久挂起
312. `payload.body``streamBody` 两条路径都已覆盖
323. 相关自动化测试已通过