You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ozone.apache.org by "ASF GitHub Bot (Jira)" <ji...@apache.org> on 2026/06/04 11:01:00 UTC
[jira] [Updated] (HDDS-15479) Potential for final chunk to not be read at the end of the stream
[ https://issues.apache.org/jira/browse/HDDS-15479?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
ASF GitHub Bot updated HDDS-15479:
----------------------------------
Labels: pull-request-available (was: )
> Potential for final chunk to not be read at the end of the stream
> -----------------------------------------------------------------
>
> Key: HDDS-15479
> URL: https://issues.apache.org/jira/browse/HDDS-15479
> Project: Apache Ozone
> Issue Type: Sub-task
> Reporter: Stephen O'Donnell
> Assignee: Stephen O'Donnell
> Priority: Major
> Labels: pull-request-available
>
> In StreamBlockInputStream.poll() if checks `future.isDone()` before draining the queue:
> {code}
> while (true) {
> checkError();
> if (future.isDone()) { // <- checked FIRST
> return null; // returns even if queue has items
> }
> proto = responseQueue.poll(pollTimeoutNanos, TimeUnit.NANOSECONDS);
> ...
> }
> {code}
> If the gRPC thread delivers onNext() (adds an item to the queue) and then immediately calls onCompleted() (marks the future done) between two iterations of the polling loop, the queued item is silently dropped. This can cause partial reads —
> the data was delivered by the server but never consumed by the client. The fix is to drain the queue before checking isDone().
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@ozone.apache.org
For additional commands, e-mail: issues-help@ozone.apache.org