
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
..
2025-10-27 23:07:46 +08:00
2025-12-14 20:54:27 +08:00
2025-12-14 21:37:55 +08:00
2025-12-14 21:45:44 +08:00
2025-12-14 21:21:37 +08:00
2025-12-14 22:04:33 +08:00
2025-12-14 22:10:25 +08:00
2025-12-22 13:07:06 +08:00
2026-10-06 21:26:10 +08:00
2026-03-31 21:03:21 +08:00
2025-10-27 23:07:46 +08:00
2026-05-16 19:31:22 +08:00
2025-12-10 22:53:33 +08:00
2026-09-19 22:40:04 +08:00
2026-03-28 09:57:14 +08:00
2026-03-31 19:36:16 +08:00
2026-04-02 11:05:36 +08:00
2025-12-06 14:35:42 +08:00
2025-12-06 14:35:42 +08:00
2026-03-31 21:24:05 +08:00
2025-10-27 23:07:46 +08:00
2025-12-14 20:54:27 +08:00
2025-12-14 20:54:27 +08:00
2025-12-14 20:31:37 +08:00
2026-08-31 16:42:49 +08:00
2026-08-31 16:52:42 +08:00
2025-12-04 18:18:33 +08:00
2026-09-07 20:13:43 +08:00
2025-12-04 22:59:18 +08:00
2025-12-04 22:59:18 +08:00
2025-10-27 23:07:46 +08:00
2026-02-28 21:29:42 +08:00
2026-02-28 21:29:42 +08:00
2026-06-14 17:58:32 +08:00
2026-05-15 18:44:04 +08:00
2026-10-09 21:18:59 +08:00
2026-10-09 21:18:59 +08:00
2026-10-09 21:18:59 +08:00
2026-04-02 11:22:27 +08:00
2026-03-31 19:36:16 +08:00
2025-10-27 23:07:46 +08:00
2026-02-28 21:29:42 +08:00
2026-06-15 13:48:31 +08:00
2026-02-28 21:29:42 +08:00
2025-12-04 22:59:18 +08:00
2026-04-20 20:40:57 +08:00
2025-12-06 19:12:54 +08:00
2025-12-06 19:12:54 +08:00
2025-12-06 19:12:54 +08:00
2025-12-06 19:12:54 +08:00
2025-10-27 23:07:46 +08:00
2026-03-31 22:03:26 +08:00
2026-02-28 21:29:42 +08:00
2026-06-15 13:48:31 +08:00
2026-05-26 16:38:44 +08:00
2026-05-16 19:31:22 +08:00
2026-08-05 22:17:22 +08:00
2026-04-01 10:48:23 +08:00
2025-12-06 15:39:10 +08:00
2026-09-01 09:54:08 +08:00
2025-12-14 20:24:18 +08:00
2025-10-27 23:07:46 +08:00
2025-10-27 23:07:46 +08:00
2026-06-11 11:34:54 +08:00
2025-12-06 14:35:42 +08:00
2025-12-15 12:58:23 +08:00
2025-12-15 12:58:23 +08:00
2025-12-15 12:58:23 +08:00
2026-10-06 11:31:52 +08:00
2026-08-21 12:15:44 +08:00
2026-05-13 22:01:28 +08:00
2026-08-21 12:15:44 +08:00
2026-02-28 21:29:42 +08:00
2026-10-06 11:31:52 +08:00
2026-10-06 11:31:52 +08:00
2026-10-06 11:31:52 +08:00
2025-12-06 15:39:10 +08:00
2026-07-20 13:12:10 +08:00
2026-02-28 21:29:42 +08:00
2025-12-05 23:22:13 +08:00
2026-03-31 22:03:26 +08:00