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

Stephen O'Donnell commented on HDFS-15366:
------------------------------------------

Looking at the code where the NPE occurred (in the version this cluster was 
running), it is:

{code}
  /** @return the parent directory */
  public final INodeDirectory getParent() {
    return parent == null? null
        : parent.isReference()? getParentReference().getParent(): 
parent.asDirectory(); // NPE on this line
  }

  /**
   * @return the parent as a reference if this is a referred inode;
   *         otherwise, return null.
   */
  public INodeReference getParentReference() {
    return parent == null || !parent.isReference()? null: 
(INodeReference)parent;
  }
{code}

If parent is null the code handles it, which suggest getParentReference() must 
be returning null. Looking at the code, I don't see how it can return null.

We suspect some sort of race condition here. This problem does not occur 
frequently, but there is clearly a problem somewhere.

> Active NameNode went down with NPE
> ----------------------------------
>
>                 Key: HDFS-15366
>                 URL: https://issues.apache.org/jira/browse/HDFS-15366
>             Project: Hadoop HDFS
>          Issue Type: Bug
>    Affects Versions: 2.7.3
>            Reporter: sarun singla
>            Priority: Major
>
> {code:java}
> 2020-05-12 00:31:54,565 ERROR blockmanagement.BlockManager 
> (BlockManager.java:run(3816)) - ReplicationMonitor thread received Runtime 
> exception.
> java.lang.NullPointerException
>  at org.apache.hadoop.hdfs.server.namenode.INode.getParent(INode.java:629)
>  at 
> org.apache.hadoop.hdfs.server.namenode.FSDirectory.getRelativePathINodes(FSDirectory.java:1009)
>  at 
> org.apache.hadoop.hdfs.server.namenode.FSDirectory.getFullPathINodes(FSDirectory.java:1015)
>  at 
> org.apache.hadoop.hdfs.server.namenode.FSDirectory.getFullPathName(FSDirectory.java:1020)
>  at 
> org.apache.hadoop.hdfs.server.namenode.INode.getFullPathName(INode.java:591)
>  at 
> org.apache.hadoop.hdfs.server.namenode.INodeFile.getName(INodeFile.java:550)
>  at 
> org.apache.hadoop.hdfs.server.blockmanagement.BlockManager$ReplicationWork.chooseTargets(BlockManager.java:3912)
>  at 
> org.apache.hadoop.hdfs.server.blockmanagement.BlockManager$ReplicationWork.access$200(BlockManager.java:3875)
>  at 
> org.apache.hadoop.hdfs.server.blockmanagement.BlockManager.computeReplicationWorkForBlocks(BlockManager.java:1560)
>  at 
> org.apache.hadoop.hdfs.server.blockmanagement.BlockManager.computeReplicationWork(BlockManager.java:1452)
>  at 
> org.apache.hadoop.hdfs.server.blockmanagement.BlockManager.computeDatanodeWork(BlockManager.java:3847)
>  at 
> org.apache.hadoop.hdfs.server.blockmanagement.BlockManager$ReplicationMonitor.run(BlockManager.java:3799)
>  at java.lang.Thread.run(Thread.java:748)
> 2020-05-12 00:31:54,567 INFO util.ExitUtil (ExitUtil.java:terminate(124)) - 
> Exiting with status 1
> 2020-05-12 00:31:54,621 INFO namenode.NameNode (LogAdapter.java:info(47)) - 
> SHUTDOWN_MSG:
> /************************************************************
> SHUTDOWN_MSG: Shutting down NameNode at xyz.com/xxx
> ************************************************************/{code}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to