Repository navigation
feat(file): a coalescing IO service for planning-protocol scans - #10548
joseph-isaacs wants to merge 1 commit into
Conversation
Serves the planning protocol's `IoService` reads of a file: - `FileIoService` coalesces the ranges a batch of requests or announcements asks for, reads each range once for every session interested in it, and withdraws a dropped session's interest. `FileScanIo` serves the same protocol through the file's segment source and read driver. - Local files reuse their handles and admit native reads up to a bound; object-store reads stream completions as they land. - The read driver keeps its coalescing scratch between passes and can leave optional requests out of coalescing. - Segment caches can answer synchronously from `get_if_ready`. - Request tracing ids for diagnostics. A file opened over a reader carries the service as `VortexFile::scan_io`. Nothing drives it yet; the planning scan that does follows separately. Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01P1oQtzTgSzkvrGDKisoNko Signed-off-by: Claude <[email protected]>
Merging this PR will regress 2 benchmarks
|
| Mode | Benchmark | BASE |
HEAD |
Efficiency | |
|---|---|---|---|---|---|
| ❌ |
Simulation | density_sweep_dense_runs[0.001] |
29 µs | 46.7 µs | -38.02% |
| ❌ ℹ️ | Simulation | test_scan_filter[int] |
3 ms | 3.4 ms | -10.44% |
| ⚡ | Simulation | take_map[(0.1, 1.0)] |
352.2 µs | 221.2 µs | +59.22% |
| ⚡ | Simulation | take_map[(0.1, 0.5)] |
182.6 µs | 146.4 µs | +24.72% |
| ⚡ | Simulation | take_map[(0.1, 0.05)] |
87 µs | 77.4 µs | +12.42% |
Tip
Investigate this regression by commenting @codspeedbot fix this regression on this PR, or directly use the CodSpeed MCP with your agent.
Comparing ji/scan-v2-1-io (7f2d936) with develop (6eae823)
Footnotes
-
12 benchmarks were skipped, so the baseline results were used instead. If they were deleted from the codebase, click here and archive them to remove them from the performance reports. ↩
|
This PR has been marked as stale because it has been open for 14 days with no activity. Please comment or remove the stale label if you wish to keep it active, otherwise it will be closed in 7 days |
|
Closing as superseded: V2 scans on Generated by Claude Code |
Summary
1/5 of a stack that splits the V2 scan (#10464 and #10547) into smaller PRs on current
develop. This is the content of #10463, rebased ondevelop, unchanged. It adds the IO layer the planner-driven scan reads through. Nothing drives it until the V2 scan PRs.Stack:
vortex-scan)vortex-layoutvortex-file, DataFusion and DuckDBChanges
FileIoService. Coalesces the ranges a batch of planning-protocol requests or announcements asks for. Each range is read once for every session interested in it, and a dropped session's interest is withdrawn.FileScanIo. Serves the same protocol through the file's segment source and read driver, sharing pending reads between live consumers.VORTEX_SCAN_IO_COALESCE_OPTIONAL).SegmentCache::get_if_ready.Unit tests for coalescing, shared reads, withdrawal and wake-ups are in
segments::{io_service, scan_io}.Checks run:
cargo clippy -p vortex-io -p vortex-scan -p vortex-layout -p vortex-file --all-targets --all-features -- -D warnings🤖 Generated with Claude Code
https://claude.ai/code/session_01Hai26WGsNERxRHXpA3JboE
Generated by Claude Code