Files
HommyandClaude Code b4e39e9451 修复 get_draft 错误码不重试,并给下载阶段加总超时。
ResponseMiddleware 把所有非 200 改写成 HTTP 200,真实状态码在 body 的 code 里。
因此 draft_downloader 里按 HTTP 状态判断重试的分支对文件列表请求是死代码,
真实错误全部走 code != 0 分支——而该分支此前立即判死、零重试,服务端 5xx
事实上从未被重试过;desktop-client 则只检查 response.status(恒为 200),
从不看 code,服务端瞬时错误直接弹报错、不重试。

服务端 code != 0 现按信封分类:9998/9999(系统内部错误)与 ≥500 可重试,
业务码 1001-2050 保持立即失败。客户端把信封校验移进 requestGetDraftOnce,
使其落在重试循环内;只挂 apiCode 不挂 response,否则 response.status 恒为
200 会把「服务器返回错误 (200)」当成原因报给用户。

下载阶段新增 5 分钟总预算:读写超时只管单次 socket 读写,慢速滴流能无限续期,
重试预算又逐层相乘,故另设按阶段计时的预算,检查点只在发起新请求之前与 chunk
之间(后者是慢速滴流唯一能拦住的地方)。另修 _download_remote_file_raising
不归还连接的泄漏,并给 robocopy 加 120s 超时。

客户端 ENOTFOUND(NXDOMAIN,对应服务端 Errno 11001)改为 3 次小预算重试,
与服务端 _DNS_RETRY_BUDGET 对齐;ECONNREFUSED 仍不重试。

下载器测试 128 → 144 项。改动了一条既有断言:test_non200_404_does_not_retry
原先写 assert_not_called(),即把「404 分支不归还连接」这个泄漏当成了预期行为。

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-10-09 21:18:59 +08:00
..
2026-09-13 15:10:59 +08:00
2026-09-14 11:12:03 +08:00
2025-12-25 20:00:09 +08:00
2025-12-25 20:00:09 +08:00
2026-09-13 19:09:07 +08:00
2026-09-13 22:33:05 +08:00
2026-09-14 09:23:04 +08:00