[ 
https://issues.apache.org/jira/browse/HDFS-517?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12738652#action_12738652
 ] 

Konstantin Shvachko commented on HDFS-517:
------------------------------------------

- {{BlockInfoUnderConstruction}} should be a subclass of {{BlockInfo}}. It 
should contain an array of {{locations}} reflecting the write pipeline order, 
and replica states.
- When a new block is allocated it is created as a 
{{BlockInfoUnderConstruction}}. When the block changes its state to 
{{COMPLETE}} the {{BlockInfoUnderConstruction}} is replaced by regular 
{{BlockInfo}} in the blocksMap, the file inode, and the data-node block list.
- Currently we do not maintain replication of blocks under construction so 
other maps like {{UnderReplicatedBlocks}} or {{excessReplicateMap}} would not 
contain these blocks and therefore do need to be updated.
- {{BlockInfoUnderConstruction.locations}} should be used to maintain the 
pipeline and for block recovery, but not for reading. So locations remain 
invisible for readers until the replicas are reported by data-nodes. This is 
consistent with current behavior, and should change later when the new read is 
implemented.
- When a replica is reported by the data-node the block is included into the 
list of blocks belonging to the corresponding {{DatanodeDescriptor}} and thus 
becomes readable.
- The {{locations}} and {{replicaStates}} are not persistent fields (consistent 
with current implementation). When name-node restarts it sets the block state 
to {{UNDER_RECOVERY}} and waits for block recovery according to the append 
design.
- {{INodeFileUnderConstruction.targets}} field becomes redundant.


> Introduce BlockInfoUnderConstruction to reflect block replica states while 
> writing.
> -----------------------------------------------------------------------------------
>
>                 Key: HDFS-517
>                 URL: https://issues.apache.org/jira/browse/HDFS-517
>             Project: Hadoop HDFS
>          Issue Type: Sub-task
>          Components: name-node
>    Affects Versions: 0.21.0
>            Reporter: Konstantin Shvachko
>            Assignee: Konstantin Shvachko
>             Fix For: Append Branch
>
>
> Currently when a block is created its locations are stored in 
> {{INodeFileUnderConstruction.targets}}, which correspond to the last 
> allocated block. With the new append design we will need to keep track of 
> block replicas for several blocks rather than just the last one.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to