#398·twirp

当 Twirp 服务器无法写入响应时,会发出 200 状态码

作者: Aerendel创建于 2024年8月28日更新于 2026年8月2日

在排除一些错误时,我注意到在极少数情况下,twirp 无法将所有响应字节写入响应中(例如由于某些 I/O 超时),响应状态码仍然设置为 200。然而,错误已被捕获并发送到错误钩,导致出现奇怪的情况,可能会看到记录的 twirp 错误,但状态码仍为成功。从客户端的角度来看,我尚未能够测试此问题,但我想您会收到一个 HTTP 200,但响应不完整或无法解析。有关的代码位于 这里。第 1357 行设置了 200 状态码,在第 1363 行后处理写入错误,但状态码未变化。这可能有很好的理由,但我认为该行为应该以 5xx 状态码呈现。如果这是一个您认为应该修复的有效错误,我很乐意参与 Pull Request 的工作,或者请告诉我,如果此行为是有设计的。