Harden host deletion and test stability
This commit is contained in:
@@ -37,6 +37,10 @@
|
||||
- 调通细节与诊断经验已沉淀到:
|
||||
- `docs/REAL_HOST_ACCEPTANCE_LEARNINGS.md`
|
||||
- `docs/REAL_HOST_ARTIFACT_RETENTION.md`
|
||||
- 2026-05-24 本地代码门禁修复已继续收口三类非回归点:
|
||||
- `go test -race ./... -count=1` 现已再次真实通过;根因不是业务逻辑,而是多个测试包并行 `sqlite.Open()` 时与 `modernc.org/sqlite` 初始化路径的 race 噪音。当前已把 `internal/app`、`internal/provision`、`internal/reconcile` 的测试 SQLite 打开路径收口到串行 helper,关闭这类假红灯,同时保持 sqlite 包内测试不引入导入环。
|
||||
- `DELETE /api/hosts/{hostID}` 不再默认放行危险级联删除;`hosts` repo 现在会先统计 `import_batches / managed_resources / reconcile_runs` 三类运行态依赖,有残留时返回 `409 host_in_use`,避免误删状态库里的回滚/对账真相。
|
||||
- 控制面 JSON 请求体现在统一受 `MaxBytesReader` 限制;超限请求会明确返回 `413 request_too_large`,不再允许无界 body 直接进入解码路径。
|
||||
|
||||
## 本轮已完成
|
||||
|
||||
@@ -88,6 +92,11 @@
|
||||
14. relay-manager latest-head 已补宿主升级后的 capability 自愈
|
||||
- 对 `API returned 403: Forbidden` 这类 `/responses` 误判 advisory,控制面现在会在 access closure 与 reconcile rerun 中把目标 account 的 `openai_responses_supported` 修正为 `false`,随后重试 gateway `/v1/chat/completions`
|
||||
- 这样即使宿主升级或异步 probe 把 capability 标记覆写错,控制面也能在“安装后确认”与“后台持续对账”两个环节重新拉回可用状态
|
||||
15. 2026-05-24 本地质量门禁补丁已完成
|
||||
- 新增 repo 级删除保护:`internal/store/sqlite/hosts_repo.go` 引入 `RuntimeDependencyCountsByHostID` 与 `HostDeleteBlocker`
|
||||
- 新增回归测试:`TestHostsRepoDeleteByHostIDBlocksWhenRuntimeStateExists`、`TestBatchImportRejectsOversizedJSONBody`、`TestDecodeJSON/rejects oversized request body`
|
||||
- `internal/app/http_api.go` 现已统一限制 JSON request body 大小,并把 host 删除占用态映射为 `host_in_use`
|
||||
- `internal/app` / `internal/provision` / `internal/reconcile` 测试 SQLite 打开路径已改为串行 helper,当前 `go test -race ./... -count=1` 重新恢复为绿
|
||||
|
||||
## 已验证门禁
|
||||
|
||||
|
||||
Reference in New Issue
Block a user