Repository navigation
tantivy: serve bundle ranges from the foyer disk tier - #430
Conversation
A cold 7-day errors list reads ~1.1 GB of bundle ranges, all fast-field columns (prod counters), which tantivy loads whole per index. The 4 GB block cache makes repeats free, but every deploy empties it and the first view of each dashboard re-read those columns from S3. Bundles are immutable (every publish takes a fresh generation path), so their ranges are cached disk-only under the block cache and survive restarts.
Monoscope production impact · Coverage unknownProject Evidence window (UTC): 2026-10-18 17:18:07.901369863 UTC → 2026-10-25 17:18:07.901369863 UTC Coverage: Open Monoscope for evidence and coverage details. |
ReviewThe change is small and well-targeted. Bundles are immutable because every publish takes a fresh generation path, so a range cache keyed on path and range is safe. The Things to consider
StyleThis follows the repo's conventions: it's concise, with no new abstractions beyond the two cache methods. The LGTM once (1) and (2) are addressed or explicitly waved off. |
Cold first loads of filtered lists (7-day errors list on 6297304f: ~8.4 s) read ~1.1 GB of bundle ranges, and the #428 counters show 100% of it is fast-field columns, which tantivy loads whole per index. The 4 GB block cache makes repeats free, but every deploy empties it.
Bundles are immutable (every publish uploads to a fresh generation path), so
StoreSourcenow checks the shared foyer cache before a ranged GET and inserts what it fetched disk-only (SharedFoyerCache::{get_immutable, put_immutable}), so ranges survive restarts without displacing the in-memory working set. New counters:range_disk_hits,range_disk_hit_bytes;range_reads/range_read_bytesnow count object-store fetches only.Test:
bundle_ranges_survive_a_restart_in_the_disk_cache(a second reader with an empty block cache makes zero object-store range reads); red with the disk cache disconnected.Local signoff: fmt/test/pg-smoke from the first run, e2e/clippy rerun after the first run was terminated externally;
ci.sh gatereports all five attested for this tree.🤖 Generated with Claude Code