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

Uma Maheswara Rao G updated HDFS-5710:
--------------------------------------

    Attachment: HDFS-5710.patch

Just returning empty string in case if inodes become null when its called with 
out holding global lock. getFullPathName called many places. Instead of 
retuning null and checking evrywhere null, returning empty string may be ok.
Attached simple patch with the change.

> FSDirectory#getFullPathName should check inodes against null
> ------------------------------------------------------------
>
>                 Key: HDFS-5710
>                 URL: https://issues.apache.org/jira/browse/HDFS-5710
>             Project: Hadoop HDFS
>          Issue Type: Bug
>    Affects Versions: 2.2.0
>            Reporter: Ted Yu
>            Assignee: Uma Maheswara Rao G
>         Attachments: HDFS-5710.patch, hdfs-5710-output.html
>
>
> From 
> https://builds.apache.org/job/hbase-0.96-hadoop2/166/testReport/junit/org.apache.hadoop.hbase.mapreduce/TestTableInputFormatScan1/org_apache_hadoop_hbase_mapreduce_TestTableInputFormatScan1/
>  :
> {code}
> 2014-01-01 00:10:15,571 INFO  [IPC Server handler 2 on 50198] 
> blockmanagement.BlockManager(1009): BLOCK* addToInvalidates: 
> blk_1073741967_1143 127.0.0.1:40188 127.0.0.1:46149 127.0.0.1:41496 
> 2014-01-01 00:10:16,559 WARN  
> [org.apache.hadoop.hdfs.server.blockmanagement.BlockManager$ReplicationMonitor@93935b]
>  namenode.FSDirectory(1854): Could not get full path. Corresponding file 
> might have deleted already.
> 2014-01-01 00:10:16,560 FATAL 
> [org.apache.hadoop.hdfs.server.blockmanagement.BlockManager$ReplicationMonitor@93935b]
>  blockmanagement.BlockManager$ReplicationMonitor(3127): ReplicationMonitor 
> thread received Runtime exception. 
> java.lang.NullPointerException
>       at 
> org.apache.hadoop.hdfs.server.namenode.FSDirectory.getFullPathName(FSDirectory.java:1871)
>       at 
> org.apache.hadoop.hdfs.server.namenode.INode.getFullPathName(INode.java:482)
>       at 
> org.apache.hadoop.hdfs.server.namenode.INodeFile.getName(INodeFile.java:316)
>       at 
> org.apache.hadoop.hdfs.server.blockmanagement.BlockPlacementPolicy.chooseTarget(BlockPlacementPolicy.java:118)
>       at 
> org.apache.hadoop.hdfs.server.blockmanagement.BlockManager.computeReplicationWorkForBlocks(BlockManager.java:1259)
>       at 
> org.apache.hadoop.hdfs.server.blockmanagement.BlockManager.computeReplicationWork(BlockManager.java:1167)
>       at 
> org.apache.hadoop.hdfs.server.blockmanagement.BlockManager.computeDatanodeWork(BlockManager.java:3158)
>       at 
> org.apache.hadoop.hdfs.server.blockmanagement.BlockManager$ReplicationMonitor.run(BlockManager.java:3112)
>       at java.lang.Thread.run(Thread.java:724)
> {code}
> Looks like getRelativePathINodes() returned null but getFullPathName() didn't 
> check inodes against null, leading to NPE.



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)

Reply via email to