Find what keeps macOS CLI processes alive after commands

未关闭
#1,956 1 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

维护者通常 1 天内回复

还没有人认领这个 Issue。

评估

难度
4/5
预计耗时
3-5 天
新手友好度
48/100
Issue 类型
缺陷
描述清晰度
基本清楚
活跃度
活跃
技术栈
macos, node.js, typescript
领域
cli, devtools

调研方向

Start with packages/cli/src/lib/force-exit.ts and trace the command shutdown path that calls scheduleForceExit(). The issue asks to identify any event-loop handle keeping commands alive on macOS; compare findings with the earlier fixes in getsentry/cli#1488 and the reported exit telemetry loss in #1448. Done means the lingering handle is reproduced and identified, with evidence that supports deciding whether the backstop is still needed.

由索引模型根据 Issue 内容生成。

描述

On macOS, scheduleForceExit() (packages/cli/src/lib/force-exit.ts) arms an unref'd 100 ms process.exit() after every command. It is a backstop, not a fix: we don't know which handle, if any, still keeps the event loop alive after a command finishes.

  • getsentry/cli#1237: commands hung after writing their output. getsentry/cli#1396 added the backstop for every command.
  • getsentry/cli#1488 then closed undici's global dispatcher, which fixed the known cause (pooled keep-alive sockets). The backstop stayed for "a libuv refcount quirk", which nobody has reproduced since.
  • The backstop has a cost: on macOS it cuts off the exit telemetry flush (#1448).
  • History: in getsentry/cli#782, #833, and #835, a forced exit after init was later removed once the real leak was found. That leak was the workaround itself.
  • #1955 adds the sentry-cli/no-process-exit lint rule. The backstop is one of its allowed exceptions, so it should not get wider (#1950).

Raised by BYK in review of #1955.

--

View Session in Sentry

主要语言
TypeScript
星标
957
派生
174
平均合并
22 小时 56 分钟
30 天内合并 PR
345

环境准备

这个项目没有提供开发容器、Dockerfile 或贡献指南,环境需要你自己搭建:先看它的 README,通用步骤见我们的新手贡献指南。

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

getsentry/toolkit 的其他 Issue

查看 getsentry/toolkit 的全部 Issue

相似的 Issue

更多 TypeScript Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。