fix(sync): 依赖超时后限制就绪检查工作量

This commit is contained in:
2026-09-09 06:43:56 +08:00
parent 866e7af444
commit 65a658fa75
4 changed files with 109 additions and 13 deletions
@@ -661,3 +661,13 @@ Core 的独立数据目录目前不等于已授权 Vault。Python 旧笔记写
- 实际运行 Uvicorn TCP 回环测试:四个 1 MiB + 17 字节验证非整块末尾;四个 100 MiB 验证实际大对象。两项通过,耗时 16.28 秒;大对象上传至下载/隔离验证全部完成约 9.31 秒,400 MiB 内容全部摘要一致。日志 .build/sync-upload-benchmark.logJUnit .build/sync-upload-benchmark.xml。
- 此结果是同一 Python 进程内 SQLite/DiskObjects 单服务实例与 HTTP 客户端的受控检查,不是 PostgreSQL/MinIO 两 worker 基准。service_rss_bytes 明确 nullacceptance 明确 NOT_ASSESSED,不能将传输通过当作 RSS≤2 GiB 或完整 S-09 通过。本机 Get-Command docker 未找到可执行文件;生产拓扑/服务内存采集/30 分钟负载仍需继续。
- 最终 Sync 服务端全套 27 通过、2 项依赖弃用警告,22.39 秒;日志 .build/sync-server-four-upload-full.logJUnit .build/sync-server-four-upload-full.xml。用户 Vault 修改保持原状,完整生产化目标未完成。
## 增量:就绪探测超时后的工作线程有界性
- 只读复查测试服务器:/health 返回 200/ready 返回 503 DEPENDENCY_UNAVAILABLESSH 22 TCP 可连接但读取 banner 得到 0 字节,尚未进入认证。没有远端写入;不能据此定位具体依赖或宣称部署已恢复。
- readiness 原先 wait_for(to_thread(...), 3) 超时后取消包装任务,但不能停止底层同步线程;缓存到期后可能再创建新的阻塞探测。本轮提取 Readiness,使用 shield 保持任务可追踪,并在其结束前复用同一进行中的任务,每个应用 worker 最多一个此类依赖探测。保持 3 秒等待、5 秒结果缓存与对外固定错误码。
- 请求取消不丢失后台任务引用;晚到异常由完成回调检索,不写入依赖错误文本或凭据。完成后的后续新探测可恢复 ready。测试覆盖取消后 20 个探测请求均失败但底层调用数仍为 1、释放阻塞后异常收尾、健康新探测,以及失败/成功结果缓存。
- 本改动限制同时进行的后台探测数量,不能强杀陷入 OS/驱动 I/O 的线程,不作为异常退出时限证明。真实依赖超时、远端恢复和服务负载验收仍未完成。
- 首次全量测试暴露提取代码时误删相邻 handshake 路由(1 failed / 28 passed);差异审查已恢复原路由,此失败不计为最终通过证据,最终结果另列。
- 修正后最终 Sync 全套 29 通过、2 项依赖弃用警告,22.83 秒,包含实际四并发 100 MiB TCP 传输。日志 .build/sync-readiness-full-final.logJUnit .build/sync-readiness-full-final.xml;完整生产化目标仍未完成。