spike(storage): evaluate sort and partition reuse for construction (#1506) - #1568
Conversation
…tes (#1506) Extends the GF_SHAPE_SORT_SPIKE selector to compact details and Arrow row partitions and adds a DataFusion SortExec mode, all in the real partition loader. Adds test-support experiments for a bounded external sort of an over-budget hub partition and for hash repartitioning with a global merge, plus an operator-run kernel measurement example. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
S18/S20 complete-ingest pairs, kernel measurements, cross-mode digest identity, over-budget hub refusal versus bounded external sort, and the independently reviewed partitioning incompatibility proofs, with per-candidate dispositions. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
|
Important Review skippedAuto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Repository: CurateLabs/graphforge/.coderabbit.yaml Review profile: CHILL Plan: Advanced Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Warning Billing warning: we have not been able to collect payment for this subscription for more than 72 hours. Please update the payment method or pay any pending invoices in Billing to avoid service interruption. Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Closes #1506.
Summary
This evaluates DataFusion/Arrow sorting and partitioning against GraphForge's construction sort and partition code, following the #1505 protocol. The full evidence is in
docs/development/evidence/shape-sort-partition-spike-1506.md. Raw data, drivers and the independent review are indocs/development/evidence/sort-partition-spike-1506/.Experiment code (
cfg(test)/test-supportonly; never selected by default; invalid modes fail closed):GF_SHAPE_SORT_SPIKEnow selectsbaseline,arrow-fixed(spike(storage): Arrow fixed-partition sort experiment (#1506) #1511's slice, renamed),arrowordatafusionin the real partition loaders:LargeBinaryview that still moves offsets;SortExecwith aFairSpillPooland a caller-owned spill directory, which streams real sealed spill segments.SortExec, thenSortPreservingMergeExec.examples/sort_partition_spike.rsfor kernel measurements, with a counting allocator. It is added to Bazel and to the parity map.Results (bounded to the tested mechanisms and envelope)
Correctness
cargo test -p graphforge-storage --lib: 1,296 passed in each of the four modes.same_input_twice_produces_identical_digests: identical 5 shaped and 28 encoded digests across all modes, matching the perf(storage): partition loads materialize detail records padded, a 5-6x in-memory multiplier #1441 values.result_sha256values are identical within each scale.Validation
cargo fmt --all -- --checkcargo clippy --workspace -- -D warningscargo clippy -p graphforge-storage --lib --examples --features test-support -- -D warningsmake pre-push-fast: passed, including the Cargo/Bazel drift check.🤖 Generated with Claude Code
Need help on this PR? Tag
@codesmith-botwith what you need. Autofix is disabled.