Repository navigation
feat(engine): expose ann diagnostics and budget native writer buffers - #1086
Conversation
VerdictComment. The two follow-up commits match Lance 13.0.0 for the counters they publish and for the writer option they can set. Do not merge What this change doesThis branch contains the open Lance 13.0.0 upgrade (#1072, through Diagnostics are observations. The writer change sets BlockingRecorded GQT (dst) on this head is red. The failure belongs to the pull-request base. Workflow run That case is absent from this branch. It is on base
A logic edit in the diagnostic or budget commits will not clear this red check. Rebase, then treat a new green GQT (dst) as the merge gate. Optional1. Define In Lance 13.0.0 (tag
OmniGraph builds only 2. State the default buffer against Lance's own default, and correct the V2_2 sentence.
The setting remains the admission limit on each write account. On these two paths it is also a flush threshold. Process RSS stays outside this knob.
3. Attach the storage-cost claim to the follow-up slice. Against Contract and liabilityQuery rows, errors, and probe decisions keep the previous contract. The new profile rows are additive. Replay ignores them. That split is required: the timings overlap, they include waits, their sum is not query latency, and they can change between runs.
The execution report is the stored diagnostic. #1072 is the parent. The knobs map onto Lance 13.0.0: This slice has no bug-fix regression to add. It does not repair a row-visible defect. I added no temporary Validation
|
bb2857f to
b3a2bed
Compare
What & why
Expose Lance 13 ANN diagnostics in the existing query inspection report/profile, and use the captured
write_max_bytesallowance for native buffering on strict inserts and overwrite writes. This adds no CLI flags, settings, dependencies or storage format.ann_metricsrows identify the scan, overfetch rung and probe attempt. Six curated counters and twelve cumulative stage timings retain missing metrics as absent. Timings can overlap and never drive search or replay decisions.partitions_rankedsums the IVF partitions across opened index deltas; it is not a recall measure.diagnostics present. Timing values stay outside DST replay observations; controlled native-counter and synthetic adapter tests remain in Rust.WriteBudgettoFileWriterOptions.data_cache_bytes, with copying enabled. Native merge-insert upserts/updates retain Lance's defaults because its builder has no writer-options setter. Full arrays, nested encoders and concurrent writers can exceed this per-writer flush threshold. At the default 32 MiB, the per-column threshold can exceed Lance's native 8 MiB for narrow tables. Writes retain the existing dataset's V2_2 format.Backing issue / RFC
Maintainer-requested adoption follow-up to merged #1072. Existing detached publication and deterministic simulation contracts remain unchanged (RFC 0067, RFC 0037).
This PR is rebased onto current main, including the Lance 13 migration and CLI cleanup. Its diff contains only this adoption slice. Main's GQT pipeline assertions and separate load-explain guide are preserved.
Validation
RUST_MIN_STACK=16777216 cargo test --locked -p omnigraph-engine -p omnigraph-gqt-core --lib --test search --test writes --test engine_v2_scrubbed_replay -- --test-threads=4.git diff --checkpass. A committed 0.14 release-note preview also composes successfully.dst_bench_cost_count_golden; no regeneration was needed after rebasing.Storage-cost evidence
The staged overwrite owner reads native file metadata: the same three rows across two nonempty batches produce two hot-column pages at 128 KiB and one at the default 32 MiB, with one cold-column page, complete row/schema roundtrip and unchanged HEAD before commit. The strict/proven insert conflict owner also uses a small captured budget.
Only six new golden rows are added; every existing row is unchanged. Each label measures one public overwrite on a reopened handle, excluding setup and verification:
l.get)l.list)l.put)OverwriteWriter128KiBOverwriteWriter32MiBBoth settings read the existing state and stage/publish the same replacement. The one-batch public fixture preserves request counts at both thresholds; the staged owner separately proves the multi-batch page-layout difference. These are storage-call counts, not peak-memory or throughput measurements.