Repository navigation
Conversation
…intChunks Closes #748 Co-Authored-By: Claude Code <noreply@anthropic.com>
…hunks Co-Authored-By: Claude Code <noreply@anthropic.com>
|
补测试(针对 head f9a131c):推送 8236947,只新增 为什么补:对
新增测试 本地验证(Go 1.26.11): |
Yanami-2K
left a comment
There was a problem hiding this comment.
对照 #748 核对:stageWorkspaceCheckpointChunks 逐行搬移了分片循环(按 workspaceCheckpointChunkBytes 读块、超限报同样的错、每行前校验租约、写行后累计 SHA-256),空归档判断和事务发布留在主函数,published 失败清理语义未变;hash 改名 digest 解决了包名遮蔽。测试断言了多块大小/块数/摘要与可重组、整块边界、空源、过期租约不写行,以及租约中途过期或被接管后停在第二行,CI 全部通过。workspace_checkpoint_chunks.go 与 stage 测试的 patch 末尾被截断。
|
复审结论:✅ 通过(head
没有发现问题。 |
Closes #748
改了什么
internal/repo/workspace_checkpoint_chunks.go:把RunsRepo.SaveWorkspaceCheckpointStream里约 30 行的分片写入循环原样抽成私有方法stageWorkspaceCheckpointChunks(runID, token, archiveID, source) (size, count, sum, err)。循环体(按 4 MiB 读块、512 MiB 上限报错、每块前校验租约、写分片行、累计 SHA-256)逐行不变,只是把局部变量hash改名digest,不再遮蔽同文件导入的hash包。SaveWorkspaceCheckpointStream现在只剩:小归档走内联保存 → 生成 archive id 与失败清理 → 清理过期暂存分片 → 调用暂存 → 空归档判断 → 事务内按租约 CAS 发布清单。internal/repo/workspace_checkpoint_stage_test.go,直接覆盖新方法。为什么
原函数约 80 行,「暂存分片」和「发布清单」两个阶段混在一起,循环还要维护
size/count/hash三个外层变量。拆开后两个阶段边界清楚,暂存逻辑也能单独测试。影响范围
只在一个文件内做私有拆分。导出方法签名、SQL 条件、写入顺序、报错文案都没变,失败时 defer 清理暂存分片的逻辑也没变;调用方
internal/engine/workspace_checkpoint_stream.go不用改。怎么验证的
go vet ./internal/repo/ ./internal/engine/:通过go test ./internal/repo/ -count=1 -cover:通过(coverage 77.6%),包括原有的TestWorkspaceCheckpointChunksAtomicRoundTrip等检查点用例TestStageWorkspaceCheckpointChunks的 5 个子用例:多块写入(字节数、块数、摘要正确,每行 ≤ 4 MiB,能拼回原数据)、恰好一块、空输入、租约失效返回ErrWorkspaceInUse且不留下分片行、读错误透传go build ./...在web/embed.go处失败,原因是缺少前端构建产物(native-chat)。不带本改动的 main 上同样失败,和这次改动无关。🤖 Generated with Claude Code