[
https://issues.apache.org/jira/browse/HDDS-16620?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Chu Cheng Li updated HDDS-16620:
--------------------------------
Affects Version/s: 2.3.0
Status: Patch Available (was: Open)
> Expose BlockReadCursor as an iterator of read ranges
> ----------------------------------------------------
>
> Key: HDDS-16620
> URL: https://issues.apache.org/jira/browse/HDDS-16620
> Project: Apache Ozone
> Issue Type: Improvement
> Affects Versions: 2.3.0
> Reporter: Chu Cheng Li
> Assignee: Chu Cheng Li
> Priority: Minor
> Labels: pull-request-available
>
> Follow-up to HDDS-16258 ([PR
> #11302|https://github.com/apache/ozone/pull/11302]).
> The patch for HDDS-16258 moves chunk lookup and checksum-boundary
> calculations into {{BlockReadCursor}}, but {{KeyValueHandler#readBlockImpl}}
> still obtains the offset, length, and overlapping chunks separately and
> explicitly advances the cursor.
> Expose the cursor through {{Iterator<ReadRange>}}, where each range contains
> its block offset, length, and overlapping chunk metadata. The handler can
> consume each range with {{hasNext()}}/{{next()}}, then read, verify, and send
> its data. File I/O and stream lifecycle stay in the handler.
> Define advancement as handing out a planned range, and preserve accounting
> for bytes actually read. The handler currently aborts on incomplete reads;
> retain that behavior. Keep fallible range preparation outside
> {{Iterator.next()}}, which cannot declare a checked {{IOException}}.
> Reuse the existing cursor and tests. Preserve checksum alignment for uneven
> chunks, short final intervals, {{NONE}}, response metadata controlled by
> {{includeChecksums}}, and stream error/cleanup behavior. Add coverage for
> repeated {{hasNext()}} calls without advancement, complete range iteration,
> and {{NoSuchElementException}} after exhaustion. This follow-up does not
> require a protocol or storage-format change.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]