repro_issue_218.sh: cleanup can delete plugin folders another run made

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

维护者通常 1 天内回复

还没有人认领这个 Issue。

评估

难度
4/5
预计耗时
3-5 天
新手友好度
56/100
Issue 类型
缺陷
描述清晰度
基本清楚
活跃度
活跃
技术栈
github-actions, lua, neovim, shell
领域
devtools, testing

调研方向

Start with scripts/repro_issue_218.sh and trace how bootstrap cloning and signal cleanup handle entries in the shared lazy folder. Add a network-free stubbed regression script covering both reproductions, then wire it into CI. The issue describes atomic bootstrap cloning as the planned fix; done means the new regression fails on the current behavior and passes with the fix, including concurrent runs and signal cleanup.

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

描述

needs-triage

scripts/repro_issue_218.sh cleanup can delete plugin folders that another run made (follow-up to a Codex P2 on #458).

Defect. On SIGTERM, SIGINT or SIGHUP during Lazy! restore, the cleanup removes every entry in <data>/issue-218/lazy that was not there before the restore. A plugin folder that another run (or vv issue-218) created in the same data folder in the meantime is deleted too. Only public plugin clones are affected, not user data, and it needs a concurrent cold install plus a signal.

Reproductions.

  • A: start the script, then during the restore add lazy/other.nvim (with a .cloning marker) and a full snacks.nvim copy to the same lazy folder, then signal the script or its process group. Main deleted both folders in 6 of 6 trials.
  • B: two runs on one data folder, run A holds lazy.nvim's bootstrap clone. On main, run B exits 2 (a half clone sits under the real name lazy), and run A's exit leaves lazy.nvim invalid.

Planned fix. Atomic bootstrap: clone into lazy.nvim.bootstrap-<run> and rename it when the clone is complete, so cleanup removes only that one name. In a trial it passed A (6 of 6 folders survive) and B, and the cleanup got shorter. Add a stubbed regression script (no network) that fails on main and passes with the fix, and wire it into CI. The same branch can also refuse a TMPDIR with $ ' \ , { [`, use job control so a backgrounded run still stops its Neovim, and document the side effects.

Owner: the next change to scripts/repro_issue_218.sh. Deferred from the README verification run with the maintainer's agreement.


Generated with xum • Model: anthropic:claude-opus-5-5 • Thinking: high

主要语言
Lua
星标
3.2k
派生
223
平均合并
6 小时 7 分钟
30 天内合并 PR
210

环境准备

在 Codespaces 中打开

在浏览器里用你自己的 GitHub 账号启动这个项目的开发容器。

  • 没有 Dockerfile 或 Docker Compose 文件
  • 没有 Pull Request 模板
  • 没有贡献指南

从这里开始

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

coder/claudecode.nvim 的其他 Issue

查看 coder/claudecode.nvim 的全部 Issue

相似的 Issue

更多 Lua Issue

把新 issue 发到你的邮箱

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