mirror of
https://github.com/colbymchenry/codegraph.git
synced 2026-11-15 04:21:31 +08:00
* fix(mcp): share one connection across two spellings of one root (#1057) A symlinked checkout, or a case-variant of a root on a case-insensitive mount (macOS, NTFS, WSL DrvFs), resolved to two path strings and opened two connections to the same .codegraph/codegraph.db. The connection cache stays keyed by path, so a root recreated at the same path still heals in place (#925). On a miss, an open root that is the same index NOW (both data directories stat to one dev:ino, read as bigints) is reused and the new spelling filed as its alias. Comparing live identities means a deleted root never matches, even if a new directory reuses its inode. Windows has no usable inode, so it compares the case-folded realpath.native instead. statInode moves to directory.ts so the DB layer and the cache share one reading, and closeAll closes an aliased instance once. * fix(mcp): keep root aliases out of the connection cache (#1057) A second spelling of an open root was filed in projectCache under its own key, so one CodeGraph sat under two keys. Anything that drops one key and closes its connection (a bounded cache's eviction, as proposed in #1929) then left the other key holding a closed handle: every query on that spelling, and through the alias scan on the original spelling too, failed with "database is not open" until restart. Aliases now live in their own map (spelling -> projectCache key). projectCache is back to one key per instance, and an alias whose entry is gone is dropped and re-resolved instead of served. * fix(mcp): deduplicate equivalent project paths (#1057) Equivalent project paths could open duplicate cached connections. Compare current filesystem identities using bigint inodes and native Windows paths. Revalidate aliases and pin cached connection owners to symlink targets. Preserve recreation recovery and single-owner cleanup. Co-authored-by: Eric Minish <eric.minish@gmail.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Eric Minish <eric.minish@gmail.com> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>