fix(watcher): ignore nested .git and .codegraph directories to prevent fd leak#517
Open
vyductan wants to merge 1 commit into
Open
fix(watcher): ignore nested .git and .codegraph directories to prevent fd leak#517vyductan wants to merge 1 commit into
vyductan wants to merge 1 commit into
Conversation
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.
Problem
The file watcher (
chokidar) inFileWatcheronly ignored.gitand.codegraphdirectories when they were at the root of the workspace. If the workspace contained nested git repositories (e.g., in a monorepo setup or via git subtrees/submodules), the nested.gitdirectories were walked and watched recursively.In large codebases (such as those containing git subtree caches with 150k+ files), this would cause the node process to open tens of thousands of file descriptors, leading to
ENFILE: file table overflowand crashing development servers (like Vite/Rolldown).Solution
Updated
isAlwaysIgnoredinsrc/sync/watcher.tsto split the relative path by/and check if any segment equals.gitor.codegraph. This correctly ignores nested metadata folders at any depth.After applying this fix, the number of open file descriptors on a monorepo with nested
.gitcache files dropped from 110,000+ to ~100.