mirror of
https://github.com/mudler/LocalAI.git
synced 2026-09-28 09:05:05 -04:00
The cached gallery listing refreshed each entry's installed flag with one os.Stat per entry, under the cache's global write lock. A gallery holds about 1,900 entries. On a models directory on SMB, one refresh took about 14s. The listing and every row's VRAM estimate run this refresh, and the lock serialized them, so the models page took minutes to load. The installed check now lists the models directory once and looks up each entry in that listing. On the same SMB share the listing takes about 75ms. The answers match os.Stat: a symlink counts only when its target exists, and names with a path separator still use os.Stat. The listing runs before the lock is taken, so the lock covers only the flag updates. Concurrent callers on a cold cache now share one upstream load. Before this, each caller fetched the gallery index and the configs itself. Assisted-by: Claude:claude-opus-5-5 [Claude Code] Signed-off-by: Ettore Di Giacinto <mudler@localai.io> Co-authored-by: Ettore Di Giacinto <mudler@localai.io>