[ 
https://issues.apache.org/jira/browse/HDFS-812?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Konstantin Boudnik updated HDFS-812:
------------------------------------

    Description: 
{{FSNamesystem.internalReleaseLease()}} uses the result of 
{{iFile#numBlocks();}} call to get a number of an under construction file's 
blocks. {{numBlock()}} can return 0 if the file doesn't have any blocks yet. 
This will cause {{internalReleaseLease()}} to throw 
ArrayIndexOutOfBoundException.

In case of a single block file, the same method will throw NullPointerException 
because the penultimate block is going to be null according to the logic of 
INodeFile#getPenultimateBlock().

  was:{{FSNamesystem.internalReleaseLease()}} uses the result of 
{{iFile#numBlocks();}} call to get a number of an under construction file's 
blocks. {{numBlock()}} can return 0 if the file doesn't have any blocks yet. 
This will cause {{internalReleaseLease()}} to throw 
ArrayIndexOutOfBoundException

        Summary: FSNamesystem#internalReleaseLease throws 
ArrayIndexOutOfBoundException or NullPointerException on an empty and 
single-block file's lease recovery  (was: FSNamesystem#internalReleaseLease 
will throw ArrayIndexOutOfBoundException on an empty file's lease recovery)

> FSNamesystem#internalReleaseLease throws ArrayIndexOutOfBoundException or 
> NullPointerException on an empty and single-block file's lease recovery
> -------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: HDFS-812
>                 URL: https://issues.apache.org/jira/browse/HDFS-812
>             Project: Hadoop HDFS
>          Issue Type: Bug
>          Components: name-node
>    Affects Versions: 0.21.0, 0.22.0
>            Reporter: Konstantin Boudnik
>         Attachments: HDFS-812.patch, HDFS-812.patch
>
>
> {{FSNamesystem.internalReleaseLease()}} uses the result of 
> {{iFile#numBlocks();}} call to get a number of an under construction file's 
> blocks. {{numBlock()}} can return 0 if the file doesn't have any blocks yet. 
> This will cause {{internalReleaseLease()}} to throw 
> ArrayIndexOutOfBoundException.
> In case of a single block file, the same method will throw 
> NullPointerException because the penultimate block is going to be null 
> according to the logic of INodeFile#getPenultimateBlock().

-- 
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