fix: prevent git gc daemon from blocking unmount#22
Merged
adityamaru merged 1 commit intomainfrom Feb 6, 2026
Merged
Conversation
… unmount git gc --auto defaults to gc.autoDetach=true, which forks a background daemon for the actual garbage collection work. The parent returns immediately with exit code 0, but the daemonized child (and its sub-processes) keep running with cwd and mmap'd pack files on the mirror mount. This causes subsequent umount attempts to fail with EBUSY (exit code 32). Root cause identified in descriptinc/descript: 4 git processes (PIDs 10316-10319) with cwd inside the mirror, preventing unmount despite 3 retry attempts with exponential backoff. Fix: Pass -c gc.autoDetach=false to force synchronous GC execution so it fully completes before proceeding to mount cleanup. Also increase GC_TIMEOUT_SECS from 60s to 120s: measured GC on this repo takes ~74 seconds to repack 51 packs + 1019 loose objects. Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
git gc --autodefaults togc.autoDetach=true, forking a background daemon that keeps running with file handles on the mirror mount, causingumountto fail with EBUSY (exit code 32)-c gc.autoDetach=falseto force synchronous GC executionTest plan
gc.autoDetach=false🤖 Generated with Claude Code
Note
Low Risk
Small, targeted change to the git GC invocation and timeout; primary risk is longer cleanup time or behavior differences on older git versions.
Overview
Prevents sticky-disk unmount failures caused by
git gc --autodaemonizing in the background.runMirrorGCnow forces synchronous execution viagit -c gc.autoDetach=false gc --auto, and the GC timeout is increased from 60s to 120s (mirrored indist/index.js).Written by Cursor Bugbot for commit 4c2bc4c. This will update automatically on new commits. Configure here.