[
https://issues.apache.org/jira/browse/HADOOP-11626?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14343508#comment-14343508
]
Colin Patrick McCabe commented on HADOOP-11626:
-----------------------------------------------
I think [~ozawa] is correct here. The code that updates ReadStatistics is
correct since the read actually occurred.
However, one thing that concerns me here is that {{nread}} can be -1, in the
case where the block reader hit EOF. We should not be adding -1 to the read
statistics.
Can you make a patch to check for this case and avoid updating when it it is
true? Also, it seems that this "short read" case is an error, and therefore
worthy of a {{LOG.info}} at least... currently, it looks like we don't log
anything at all, which could make diagnosing problems difficult.
> DFSInputStream should only update ReadStatistics when the read is success.
> --------------------------------------------------------------------------
>
> Key: HADOOP-11626
> URL: https://issues.apache.org/jira/browse/HADOOP-11626
> Project: Hadoop Common
> Issue Type: Bug
> Affects Versions: 2.6.0
> Reporter: Lei (Eddy) Xu
> Assignee: Lei (Eddy) Xu
> Priority: Trivial
> Attachments: HADOOP-11626.000.patch
>
>
> In {{DFSOutputStream#actualGetFromOneDataNode()}}, it updates the
> {{ReadStatistics}} even the read is failed:
> {code}
> int nread = reader.readAll(buf, offset, len);
> updateReadStatistics(readStatistics, nread, reader);
> if (nread != len) {
> throw new IOException("truncated return from reader.read(): " +
> "excpected " + len + ", got " + nread);
> }
> {code}
> It should only record success read, i.e., after throwing {{IOE}}.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)