mirror of
https://github.com/galaxyproject/galaxy.git
synced 2026-09-21 13:50:20 +08:00
New opt-in watch_tool_source_stores (+ tool_source_store_watch_interval, default 60s): a per-process thread polls the freshness probe of every read-only named store — one extended-attribute read per store per tick for CVMFS — and reacts to token transitions. inotify does not fire on CVMFS, so polling is the only reliable signal, and catalog TTL bounds propagation anyway. On a transition the store's engine is disposed before the index reload: CVMFS keeps serving the pre-publish file to descriptors that were open before the catalog update, so pooled sqlite connections pin the old snapshot until dropped. The same disposal now also runs for read-only members in invalidate_index_cache, making the existing admin reload API and reload_tool_source_cache broadcasts correct on CVMFS as the manual trigger. The reload itself reuses invalidate_index_cache (stub registration, removal reconcile) plus a per-changed-store whoosh rebuild guarded by the corpus-signature skip. Watchable stores are read-only members with a probe: writable stores change through this process group's own populate paths, which already broadcast their own reloads. The watcher compares against the last *seen* token, not the persisted one, so a store whose publisher hasn't repopulated yet logs once instead of re-firing every tick. Claude-Session: https://claude.ai/code/session_018L7ZmCv2ubKA3JNeSL8Pkr