[
https://issues.apache.org/jira/browse/HDFS-1982?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13041481#comment-13041481
]
ramkrishna.s.vasudevan commented on HDFS-1982:
----------------------------------------------
In this
if (storedBlock != null
&& storedBlock.getINode() != null
&& (storedBlock.getGenerationStamp() <= block.getGenerationStamp() ||
storedBlock
.getINode().isUnderConstruction()))
What is the significance to check if INode is under construction?
Only the generationtimestamp check may be enough?
Kindly provide your comments.
> Null pointer exception is thrown when NN restarts with a block lesser in size
> than the block that is present in DN1 but the generation stamp is greater in
> the NN
> ------------------------------------------------------------------------------------------------------------------------------------------------------------------
>
> Key: HDFS-1982
> URL: https://issues.apache.org/jira/browse/HDFS-1982
> Project: Hadoop HDFS
> Issue Type: Bug
> Components: name-node
> Affects Versions: 0.20-append
> Environment: Linux
> Reporter: ramkrishna.s.vasudevan
> Fix For: 0.20-append
>
>
> Conisder the following scenario.
> WE have a cluster with one NN and 2 DN.
> We write some file.
> One of the block is written in DN1 but not yet completed in DN2 local disk.
> Now DN1 gets killed and so pipeline recovery happens for the block with the
> size as in DN2 but the generation stamp gets updated in the NN.
> DN2 also gets killed.
> Now restart NN and DN1
> Now if NN restarts, the block that NN has greater time stamp but the size is
> lesser in the NN.
> This leads to Null pointer exception in addstoredblock api
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira