[
https://issues.apache.org/jira/browse/HDFS-877?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Todd Lipcon updated HDFS-877:
-----------------------------
Attachment: hdfs-877.txt
New patch includes a unit test and also has two bugs fixed:
- gotEOSBefore needs to be set *before* the skip() call - reasons are included
in a comment
- I took out the IOException when read past end-of-stream happens twice, since
this should not actually be an error, if you follow other InputStream
implementations
I verified that the new unit test catches the original bug from this issue (by
reverting that fix) and also that it shows the problem that Hairong identified
(by trying the test against the first patch)
> Client-driven block verification not functioning
> ------------------------------------------------
>
> Key: HDFS-877
> URL: https://issues.apache.org/jira/browse/HDFS-877
> Project: Hadoop HDFS
> Issue Type: Bug
> Components: hdfs client, test
> Affects Versions: 0.20.1, 0.21.0, 0.22.0
> Reporter: Todd Lipcon
> Assignee: Todd Lipcon
> Priority: Blocker
> Attachments: hdfs-877.txt, hdfs-877.txt, hdfs-877.txt, hdfs-877.txt
>
>
> This is actually the reason for HDFS-734 (TestDatanodeBlockScanner timing
> out). The issue is that DFSInputStream relies on readChunk being called one
> last time at the end of the file in order to receive the
> lastPacketInBlock=true packet from the DN. However, DFSInputStream.read
> checks pos < getFileLength() before issuing the read. Thus gotEOS never
> shifts to true and checksumOk() is never called.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.