Skip to content

diag(ui): 记录 Node 期限瞬间的子进程状态 (#144) - #241

Merged
JavaZeroo merged 1 commit into
mainfrom
diag/node-spawn-latency
Oct 30, 2026
Merged

JavaZeroo merged 1 commit into
mainfrom
diag/node-spawn-latency

Conversation

@JavaZeroo

Copy link
Copy Markdown
Owner

内容

给 #144 的 Node 夹具补上期限瞬间的子进程状态(与 #40 的夹具一致的思路,但不改 10 秒期限):

  • 改用 Popen + communicate(timeout=10),记录 spawn_seconds(Popen 返回到 communicate 开始之间的父进程耗时);
  • 超时失败信息里追加:pid、spawn_seconds、exit_at_timeout(poll(),None = 仍在运行)、partial_stdout_bytes;
  • 创建失败(OSError,例如进程无法创建)单独给出 node fixture could not be created: …。

这样下一次命中时可直接区分三种情形:

观测 含义
OSError 进程根本没有创建
spawn_seconds 很大 创建调用本身被阻塞
检查点已写入 + exit_at_timeout=None 进程起来了但执行中停住

验证

python -m unittest research.ui.test_raster_style_reference → 11 tests OK(顺带补上漏掉的 import time)。

边界

  • 不改期限、不改断言判据;
  • spawn_seconds 只是 Popen 到 communicate 之间的差值,不等于完整创建耗时,仅作相对指示。

Refs #144

The node fixture now uses Popen so a timeout reports spawn_seconds, pid, exit_at_timeout and partial_stdout_bytes alongside the preload checkpoint.
@JavaZeroo
JavaZeroo merged commit cecc98e into main Oct 30, 2026
6 checks passed
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