[ https://issues.apache.org/jira/browse/HDFS-8905?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15009971#comment-15009971 ]
Kai Zheng commented on HDFS-8905: --------------------------------- Hi [~rakeshr], I'm back to your comments. Please note the logic codes are mostly from old codes as this issue indicated that it's a refactoring. Read of a buffer is from *copyFrom* method. In read of a BlockReader, the old code tells the destination bytebuffer position shouldn't be affected in case of failure, which is reasonable because BlockReader incurs remote access; In copy from a bytebuffer, errors are not likely to happen so we don't need the similar codes. Now as [~zhz] suggested we'll have *readBlock* and *readBuffer*, which may solve the second concern in your comments, because it explicitly tells the difference, and the behavior won't need to be strictly consistent. Note the two methods or the whole class are not thread safe and they're not expected to be called concurrently. If they're called in a thread, the offset is correctly maintained and I don't see any problem. Now these classes stand alone, I will add more javadocs, avoiding such confusion or concern. Sounds OK? > Refactor DFSInputStream#ReaderStrategy > -------------------------------------- > > Key: HDFS-8905 > URL: https://issues.apache.org/jira/browse/HDFS-8905 > Project: Hadoop HDFS > Issue Type: Sub-task > Components: erasure-coding > Reporter: Kai Zheng > Assignee: Kai Zheng > Attachments: HDFS-8905-HDFS-7285-v1.patch, HDFS-8905-v2.patch > > > DFSInputStream#ReaderStrategy family don't look very good. This refactors a > little bit to make them make more sense. -- This message was sent by Atlassian JIRA (v6.3.4#6332)