apache / apache/opendal

new feature: expose core reader tuning options in Java bindings

Open
#8,252 0 comments 1 reaction 0 assignees View on GitHub
enhancement
Dominant language
Rust
Stars
5.4k
Forks
825
Avg merge
1d 14m
Merged PRs (30d)
127

Description

### Feature Description

Expose the existing core reader controls through the Java reader/stream construction API so applications can use native bounded concurrency and buffering without implementing their own Range scheduler.

### Problem and Solution

Java ReadOptions currently contains only offset and length. WriteOptions already exposes write tuning. This is a binding capability gap, not evidence that the core lacks concurrent reading.

The Java options work is already tracked broadly in #6226. This issue isolates reader construction/tuning as an actionable child of that migration and #8251. Preserve the distinction between per-read range options and reader execution options; adding every field to one options class is not a design requirement.

Acceptance criteria:
- Inventory and map supported core reader controls, including concurrency, chunking and applicable prefetch/gap behavior; document unsupported controls explicitly.
- Preserve default unchunked streaming and existing range behavior.
- Verify options reach the core and have documented units and resource implications.
- Exercise the natural stream API against real storage. Do not use a shared hand-written Range adapter to hide the missing API or suppress SDK capabilities.
- Keep internal concurrency distinct from the number of application transfers.

### Additional Context

[Source reference](https://github.com/apache/opendal/blob/b6cf44f7b8a1523409e0e998e478c996ac970f03/bindings/java/src/main/java/org/apache/opendal/ReadOptions.java). OpenDAL API inventory was checked at `b6cf44f7b8a1523409e0e998e478c996ac970f03`.

Contributor guide

Open the contributing guide

Research direction

Start with bindings/java/src/main/java/org/apache/opendal/ReadOptions.java and compare the existing WriteOptions tuning surface, then trace the Java reader and stream construction API to the supported core controls. Inventory concurrency, chunking, and applicable prefetch or gap behavior, preserving default streaming and range behavior. Done means options reach the core, units and resource implications are documented, unsupported controls are explicit, and the natural stream API works against real storage.

Written by the indexing model from the issue text.

Assessment

Tech stack
java, rust
Domain
api, backend
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.