Hi all I've been experimenting with a record-level approach to segment compaction. Instead of rebuilding the content tree from NodeState like the classic compactors do, RecordRepacker walks the DAG of records reachable from the root record and repacks the raw records into densely-packed segments of a new generation, rewriting RecordId references as it goes - optionally in parallel and with record deduplication.
Early benchmarks on a real store look encouraging (roughly ~1.9× faster, ~25% smaller, ~40% fewer records, lower heap, and better read locality than the classic/parallel compactors). Two important caveats up front: - This is a research prototype, not ready for production. - The code is fully AI-generated and has not yet been reviewed for correctness or robustness. I'd welcome feedback on the idea and the approach. Branch and a short write-up: - Branch: https://github.com/apache/jackrabbit-oak/tree/record-repacker-prototype - Slides / documentation: https://github.com/apache/jackrabbit-oak/blob/record-repacker-prototype/oak-segment-tar/docs/record-repacker-research-slides.md Please take a look at the branch and the slides and let me know what you think. Thanks Julian
