Skip to content

CI: Temporal Conformance 的两个 skewed-zone 步骤没挂 run-with-stall-guard,mid-suite stall 烧满 30 分钟才被 cancel #4331

Description

@os-zhuang

#4298(scripts/run-with-stall-guard.mjs)把 Test Core 的 mid-suite stall 转成了带标签的快速失败(--stall-minutes 10,ci.yml:153/165),但 Temporal Conformance (live PG + MySQL) 的两个测试步骤还是裸跑:

  • Run driver-sql suite against both live servers(ci.yml:315)
  • Run the non-SQL temporal backends under the skewed process zone(ci.yml:353)

实测现场(PR #4305,连续两轮)

该 PR 的 delta 只有 packages/lint 新规则 + packages/spec 一段 JSDoc 注释;skewed-zone 步骤测的五个包(core/formula/driver-memory/driver-mongodb/service-analytics)没有一个依赖 lint,而 main 在同一时间窗同 job 3-4 分钟即绿(run 30608331534 / 30607301713)。两轮 stall 点还不一样:

  • run 1:卡在 packages/core kernel.test 执行中途,30m15s 被 cancel;
  • run 2:05:51:07 五个包全部打完 Done零输出 24 分钟,06:15 被 cancel —— 疑似 vitest/pnpm 进程句柄泄漏导致不退出。

即:与 Test Core 同款的非确定性 stall,只是发生在没有 guard 的 leg 上,于是每次都烧满 job 超时、以「The operation was canceled」收场,红得毫无信息量,还会把无辜 PR 拖红。

建议

两个步骤同样包上 node scripts/run-with-stall-guard.mjs --stall-minutes 10 -- …(与 Test Core 相同参数),让 stall 变成带日志尾巴的快速失败;run 2 的「全部 Done 后不退出」形态也值得让 guard 在子进程退出后对残留句柄兜底(如果 guard 目前只盯输出静默,这一形态正好覆盖)。

发现自 #4305 的 CI 排查,与该 PR 内容无关,故单独立此 issue。

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions