Skip to content

ci(session-sync): race 循环跳过单线程差分测试,race 步骤挪到并行 job - #74

Merged
AlphaCatMeow merged 1 commit into
Stack-Cairn:mainfrom
AlphaCatMeow:ci/session-sync-speedup
Nov 1, 2026
Merged

AlphaCatMeow merged 1 commit into
Stack-Cairn:mainfrom
AlphaCatMeow:ci/session-sync-speedup

Conversation

@AlphaCatMeow

Copy link
Copy Markdown
Collaborator

Session sync 的 Linux job 是这个仓库 PR 检查的最长一项(449–671 秒),其中 Race privacy streaming restoration (30x) 一步就占 168–302 秒,95c920a 和 #73(8a4116c)上撞到 5 分钟超时失败。根因是 TestRedactTextMatchesPreviousImplementation:它对 privacy、approval、backend 审批测试里的全部字符串字面量做 RedactText 新旧实现的差分,单个 goroutine,-race 下单次约 7 秒,包内其余 36 个测试合计不到 0.5 秒;语料随测试增加而变大,所以这一步越跑越慢。

改动

  • 隐私包 30 次 race 循环改为 -skip '^TestRedactTextMatchesPreviousImplementation$',再单独 -race -count=1 跑它一次。它在三平台的非 race 步骤与 Full Linux suite 里照常运行。
  • 5 个 -race -count=30 步骤从 Session sync (linux-amd64) 挪到并行的 Session sync race (linux-amd64),命令、过滤器、次数、超时都不变;每步仍是 if: !cancelled(),一步失败后其余照跑。新 job 保留 prepare-cua(go:embed 需要),这些包不依赖 xvfb、浏览器或基线目录。
  • 放弃的东西:race 失败不再让 Session sync (linux-amd64) 变红,而是显示在新的 race 检查上;该差分测试在 race 下从 30 次变为 1 次(它没有并发,重复不会暴露交错)。

实测耗时

改前(最近 3 次成功运行 41261259800 / 41259762491 / 41219195606):

项 耗时
Session sync (linux-amd64) 470 / 449 / 671 秒
其中 Race privacy (30x) 184 / 168 / 302 秒
windows-amd64 / darwin-arm64 84–127 / 101–111 秒

改后:见本 PR 的 CI,结果会补在评论里。

本机 -race(Windows + mingw gcc):隐私包 30 次循环 230 秒 → 10.3 秒;差分测试单次 6.8 秒。

验证

  • 基线:origin/main 02aae0e
  • actionlint v1.7.7:通过;git diff --check:通过
  • go test ./internal/privacy -list 37 个测试;skip 后 -v 跑 36 个 PASS,被跳过的只有目标测试
  • 本机全量 go test ./... -count=1:45 个包通过,6 个失败均为已知 Windows 环境性失败(TestBackendQueueFIFOInterruptAndShutdown、TestCompactThresholdExplicitOverride、TestFilesystemRootConfinementAndText、TestPersistenceCASIdempotencyAndRollback、TestRestoreSessionPreservesHistoryAndCacheIdentity、TestWaitingOnSubagentsDuringForegroundSubagent),与本改动无关(只改工作流)
  • 独立复审:确认被跳过测试无 goroutine / t.Parallel、只读包级 rules;新 job 前置齐全;!cancelled() 语义一致;未发现阻止合并的问题
  • 未运行:Linux 上的 race 只能在本 PR 的 CI 上看

🤖 Generated with Claude Code

- TestRedactTextMatchesPreviousImplementation 是 RedactText 新旧实现的单 goroutine
  差分,-race 下单次约 7 秒且随测试语料增长,30 次循环占 Linux job 170–300 秒并撞到
  5 分钟超时;改为 30 次循环 -skip 它,另跑 1 次 -race
- 5 个 race 步骤从 Session sync (linux-amd64) 挪到并行的
  Session sync race (linux-amd64),命令与次数不变

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@AlphaCatMeow

Copy link
Copy Markdown
Collaborator Author

改后实测(run 41268810794,8912daf)

整轮 224 秒(03:20:49 → 03:24:33),全部通过。

项 改前(41261259800 / 41259762491 / 41219195606) 改后
整轮 wall time 473 / 453 / 674 秒 224 秒
Session sync (linux-amd64) 470 / 449 / 671 秒 222 秒(不再含 race)
Session sync race (linux-amd64)(新,并行) — 194 秒
其中 Race privacy (30x) 184 / 168 / 302 秒 35 秒(含新 job 首次 race 编译)
Race privacy redaction differential (1x)(新) — 11 秒
其余 4 个 race 步骤 44+20+15+10 / 43+18+13+? / 61+29+20+13 秒 61+29+20+13 秒(与改前同量级)
windows-amd64 / darwin-arm64 127 / 84 / 117;109 / 111 / 101 秒 121 / 104 秒
  • Linux 检查从 7.5–11 分钟降到 3.7 分钟,整轮由最慢的 Linux job 决定,降幅约 52–67%。
  • 隐私 race 步骤离 5 分钟超时的余量从 0–130 秒变为约 265 秒,而且不再随测试语料增长。
  • 所有原有测试的命令、过滤器和次数不变;差分测试仍在三平台非 race 步骤、Full Linux suite 和 1 次 -race 中运行。

@AlphaCatMeow
AlphaCatMeow merged commit 90f3e79 into Stack-Cairn:main Nov 1, 2026
4 checks passed
@AlphaCatMeow
AlphaCatMeow deleted the ci/session-sync-speedup branch November 1, 2026 04:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant