退役过时的 GitLab known-host 代际¶
每个成功的 getGlabKnownHosts 探测此前会在连接 ID 及其 SSH 提供程序代际下存储一个主机列表数组。在同一 ID 下重新连接会创建新条目,而每个更早的成功代际都会保持缓存,直到显式预检重置。缓存现在为每个观察到的执行身份保留一个成功代际。
异步发布也使用现有合并器的 ownsKey(),并检查当前 SSH 代际。在重连、显式重置或被更新的探测替换之后完成的结果,无法重建已退役的缓存状态。原始调用方仍可以接收其自身已完成的结果。显式记住的主机、原生/WSL 分离、命令路由和现有探测超时均保持不变。
证据¶
运行器打包了实际的缓存、合并器和解析器。仅控制命令结果和 SSH 代际端口;它不打开 SSH 连接,也不运行 GitLab 命令。它在内存中反向应用 fix.patch,验证原始源哈希,并将该基线与未修改的当前产品源进行比较。报告包括产品、依赖项、回归测试和测试夹具哈希。
| 控制项 | 原始 | 修复后 |
|---|---|---|
| 128 代之后保留的成功结果数组 | 128 | 1 个当前数组 |
| 16 代之后保留的已记住结果数组 | 16 | 1 个当前数组 |
| 后继者应答后延迟的旧代结果 | 仍保留 | 可回收;后继者保留 |
| 显式重置后旧结果完成 | 旧结果重新填充缓存 | 下次查找执行全新探测 |
| 被放弃的探测在其替代者之后完成 | 旧主机被添加到替代缓存 | 替代者保持不变 |
| 保留演练后的显式重置 | 保留 0 个原始数组 | 保留 0 个原始数组 |
两个阶段在探测成功或失败时均保留已记住主机的更新,并隔离原生、Ubuntu WSL、Debian WSL 和两个连接 ID。results.json 记录 Node26.6;electron-results.json 记录已安装的 Electron43.7 / Node24.21 在无应用窗口下运行。两次运行均通过所有控制项。这是兼容性证据,而非历史打包二进制的复现。
ORCA_BACKGROUND_LAUNCH=1 node --expose-gc docs/audits/gitlab-known-host-retirement/reproduce.cjs
ORCA_BACKGROUND_LAUNCH=1 node node_modules/vitest/vitest.mjs run --config config/vitest.config.ts src/main/gitlab/gitlab-known-host-retirement.test.ts src/main/gitlab/gitlab-known-host-probe.test.ts src/main/gitlab/gitlab-known-host-probe-wsl-fallback.test.ts src/main/git/coalesced-probe.test.ts src/main/gitlab/client-mr-auth-rate-limit.test.ts
对于已安装的 macOS Electron 二进制文件:
ELECTRON_RUN_AS_NODE=1 ORCA_BACKGROUND_LAUNCH=1 node_modules/electron/dist/Electron.app/Contents/MacOS/Electron --expose-gc docs/audits/gitlab-known-host-retirement/reproduce.cjs docs/audits/gitlab-known-host-retirement/electron-results.json
运行器是可移植的;该可执行文件路径是 macOS 特定的。三十二个聚焦测试通过,其中包括八个新的保留/生命周期/范围控制项。针对原始源运行这八个测试会产生六个失败和两个通过的控制项。Node 类型检查、聚焦 lint(包括产物类型感知/强制转换扫描)以及变更代码质量门均通过。原始产品模块和复用的合并器与命名 main 291b4ddd6f1c1af480169885e0fda7f9c78ff053 匹配。
限制与事件映射¶
这会移除跨 SSH 代际保留的小型元数据。不同的历史执行身份在重置前可能仍各自保留一个条目;此变更不会施加新的缓存上限,也不会更改连接/提供程序生命周期。一个代际的主机列表仍保持输入大小。
已证明的累积需要更改 SSH 提供程序代际,因此无法解释 #19831 中报告的纯本地会话。没有受影响主机的观察结果将其与另一份 OOM 报告关联起来。该证明测量的是可达结果数组,而非 RSS 或事件内存的吉字节数。
本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 orca48/orca