[ https://issues.apache.org/jira/browse/HDFS-8058?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14482423#comment-14482423 ]
Yi Liu commented on HDFS-8058: ------------------------------ Zhe, Jing, thanks for your comments! {quote} The only concern I can think of is type safety: on the surface, a generic BlockInfo[] could contain mixed types.. We need some extra logic to prevent a striped block to be added to a non-striped file, and vice versa. {quote} In my thought, this would never happen, although the type is {{BlockInfo[]}}, the actual instance type is {{BlockInfoContiguous[]}} or {{BlockInfoStriped[]}}, and we also do {{assertBlock}} check before {{setBlock}}, {{addBlock}}, etc. So I think it can never contain mixed types, since you can't add {{BlockInfoContiguous}} instance to a {{BlockInfoStriped[]}}, and vice versa. Do I miss anything? {code} private void assertBlock(BlockInfo blk) { if (isStriped()) { assert blk.isStriped(); } else { assert !blk.isStriped(); } } {code} > Erasure coding: use BlockInfo[] for both striped and contiguous blocks in > INodeFile > ----------------------------------------------------------------------------------- > > Key: HDFS-8058 > URL: https://issues.apache.org/jira/browse/HDFS-8058 > Project: Hadoop HDFS > Issue Type: Sub-task > Affects Versions: HDFS-7285 > Reporter: Yi Liu > Assignee: Yi Liu > Attachments: HDFS-8058.001.patch, HDFS-8058.002.patch > > > This JIRA is to use {{BlockInfo[] blocks}} for both striped and contiguous > blocks in INodeFile. > Currently {{FileWithStripedBlocksFeature}} keeps separate list for striped > blocks, and the methods there duplicate with those in INodeFile, and current > code need to judge {{isStriped}} then do different things. Also if file is > striped, the {{blocks}} in INodeFile occupy a reference memory space. > These are not necessary, and we can use the same {{blocks}} to make code more > clear. > I keep {{FileWithStripedBlocksFeature}} as empty for follow use: I will file > a new JIRA to move {{dataBlockNum}} and {{parityBlockNum}} from > *BlockInfoStriped* to INodeFile, since ideally they are the same for all > striped blocks in a file, and store them in block will waste NN memory. -- This message was sent by Atlassian JIRA (v6.3.4#6332)