Skip to content

fix(test): 测试裸仓关 receive.autogc,消除 JGit 后台 gc 与 @TempDir 清理赛跑(dev-board#500) - #757

Merged
zeweihan merged 1 commit into
masterfrom
claude/elastic-lumiere-fec8d9
Sep 8, 2026
Merged

fix(test): 测试裸仓关 receive.autogc,消除 JGit 后台 gc 与 @TempDir 清理赛跑(dev-board#500)#757
zeweihan merged 1 commit into
masterfrom
claude/elastic-lumiere-fec8d9

Conversation

@zeweihan

@zeweihan zeweihan commented Sep 8, 2026

Copy link
Copy Markdown
Owner

问题

GitHub Actions run 34168686921 的 Backend (mvn test) 间歇性报错:

MemoryLwwMergeTest.mergeNeverLeavesRepositoryMidMerge » IO Failed to delete temp directory /tmp/junitXXXX. The following paths could not be deleted: hub.git/gc.log.lock

根因

往 file:// 裸仓 push 时 JGit 6.9 在本进程内跑 ReceivePack,收尾按远端仓库配置 receive.autogc(默认 true)调 Repository.autoGC;auto gc 又按 gc.autoDetach(默认 true)丢到后台线程。gc.log.lock 在调用线程上同步创建、在后台线程上异步删除,仓库再小也一样。测试方法一返回 JUnit 就递归删 @TempDir,撞上那几毫秒就红。

修法

JGit 没暴露可等的后台句柄,所以选关开关:新增 com.checkba.version.BareHub.init(dir) 统一建测试裸仓并写入 receive.autogc=false,把五处 Git.init().setBare(true) 全部收拢(MemoryLwwMergeTest/MemorySyncRoundTripTest/CloudSyncUploadTest/CloudSyncUpdateTest/ProjectRepoRemoteTest,后三个是同一病灶的潜伏点)。生产侧不受影响。

验证

Closes zeweihan/dev-board#500

🤖 Generated with Claude Code

…rd#500)

CI run 34168686921 的 MemoryLwwMergeTest 间歇报 Failed to delete temp
directory ... hub.git/gc.log.lock。根因:往 file:// 裸仓 push 时 JGit 在
进程内跑 ReceivePack,收尾按远端配置 receive.autogc(默认 true)触发
auto gc,auto gc 默认 autoDetach 在后台线程跑;gc.log.lock 在调用线程
同步建、后台线程异步删,与 JUnit 递归删 @tempdir 赛跑。

新增 com.checkba.version.BareHub.init(dir) 统一建测试裸仓并写入
receive.autogc=false,五处 Git.init().setBare(true) 全部收拢。
探针:autogc 开着 push 后 gc.log.lock 残留 99/100,关掉 0/100;
MemoryLwwMergeTest+MemorySyncRoundTripTest 循环 20 轮 0 失败。
version-control.md 地雷 #49 记录。

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@zeweihan
zeweihan enabled auto-merge (squash) September 8, 2026 00:07
@zeweihan
zeweihan merged commit 459dfe7 into master Sep 8, 2026
6 checks passed
@github-actions github-actions Bot locked and limited conversation to collaborators Sep 8, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant