mirror of
https://github.com/mudler/LocalAI.git
synced 2026-09-28 09:05:05 -04:00
A request with narrower allow_patterns hashes to a different CacheKey than an already-committed broader sibling, so committedResult misses and materializeLocked re-fetches files the sibling already holds. After the own-tree reuseMaterializedFile miss, consult committed sibling trees for the same Source (type+endpoint+repo+revision), re-verify the file through verifyDownloadedFile (full SHA-256, never size-only), and hard-link it into the writer's staging snapshot (copy fallback only on EXDEV). Each file is matched individually against the sibling's manifest, so a broader request can never inherit a narrower sibling's gaps as if complete. The sibling manifest set is loaded and source-matched once per materialization (files indexed by path) instead of once per staged file, so a models volume with 20 committed artifacts and a 300-file snapshot does one manifest pass rather than ~6000 reads and JSON parses. The sibling-reuse behavior cases live in the package's registered Ginkgo suite so repository test conventions apply. Refs #11047 Signed-off-by: supermario_leo <leo.stack@outlook.com>