Support cached id tracker memory placement (#10598)

Thread a `Populate` through the disk-resident id tracker's open paths
(`DiskMappingReader`, `DiskIdTracker::open`, `ReadOnlyDiskIdTracker`,
`ReadOnlyIdTrackerEnum`) so a `cached` placement primes the page cache with the
mapping files on load instead of leaving them to page in on demand. The
populate is derived from the segment config's placement at load time, clamped
by low-memory mode, in both the writable segment open and the read-only one.
The update-only lookup path keeps its transfer-nothing policy, and the
build-time open stays cold: the built segment is reloaded anyway.

`cached` is no longer rejected by validation.

Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
Andrey Vasnetsov
2026-09-12 13:09:29 +02:00
committed by GitHub
co-authored by Claude Fable 5.1
parent 81bb80a5d3
commit 95eb3c3f79
16 changed files with 149 additions and 79 deletions
+1 -1
View File
@@ -7232,7 +7232,7 @@
"type": "object",
"properties": {
"memory": {
"description": "Memory placement of the point id mapping in indexed segments: `cold` keeps it on disk and reads it on demand, `pinned` keeps it in RAM. `cached` is not supported. Default: `pinned`.",
"description": "Memory placement of the point id mapping in indexed segments: `cold` keeps it on disk and reads it on demand, `cached` keeps it on disk but primes the page cache with it on load, `pinned` keeps it in RAM. Default: `pinned`.",
"anyOf": [
{
"$ref": "#/components/schemas/Memory"