feat(jni): bridge caller-provided Java I/O into VortexReadAt/VortexWrite#8748
Conversation
|
@claude review |
|
Claude finished @0ax1's task in 1m 45s —— View job Claude PR ReviewReviewed the JNI I/O bridge ( Correctness1. Integer overflow in the read bounds check — let end = offset + length as u64;
if end > len {
vortex_bail!("read {offset}..{end} out of bounds ...");
}
let end = offset.checked_add(length as u64)
.ok_or_else(|| vortex_err!("read {offset}+{length} overflows u64"))?;2. Write upcalls block a runtime worker thread — 3. JNI global-ref drop needs a JVM attachment Performance4. Read path does a double allocation + copy — Minor / style
Tests
Overall this looks solid and close to mergeable — the overflow check (#1) is the only item I'd consider blocking; the rest are hardening and follow-ups. |
|
I think we need to fix the blocking and double copy. The java plumbing makes it easy to miss |
Benchmarks: Vortex queriesVerdict: No clear signal (low confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed (0.995x ➖, 0↑ 0↓)
datafusion / parquet (0.910x ➖, 1↑ 0↓)
duckdb / vortex-file-compressed (0.944x ➖, 0↑ 0↓)
duckdb / parquet (0.983x ➖, 0↑ 0↓)
No file size changes detected. |
I, Robert Kruszewski <github@robertk.io>, hereby add my Signed-off-by to this commit: 49691ef Signed-off-by: Robert Kruszewski <github@robertk.io>
Polar Signals Profiling ResultsLatest Run
Previous Runs (1)
Powered by Polar Signals Cloud |
Implement VortexReadAt and VortexWrite using jvm native interfaces to be able to use java readers and writers natively in vortex