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

Xiao Chen commented on HDFS-12363:
----------------------------------

{{datanodeManager}} is a final member var that's initialized in the ctor and 
referenced earlier in the same method, so it doesn't look null.
The line number is likely due to JIT compiler optimization and / or similar 
complications at JVM runtime, which simply marked the first line for a 
multi-line NPE.

Since NN lock was released and reacquired, we should handle null for 
{{getDatanode}} (since {{getStorageInfo}} is already handled).

> Possible NPE in BlockManager$StorageInfoDefragmenter#scanAndCompactStorages
> ---------------------------------------------------------------------------
>
>                 Key: HDFS-12363
>                 URL: https://issues.apache.org/jira/browse/HDFS-12363
>             Project: Hadoop HDFS
>          Issue Type: Bug
>          Components: namenode
>    Affects Versions: 2.6.0
>            Reporter: Xiao Chen
>            Assignee: Xiao Chen
>
> Saw NN going down with NPE below:
> {noformat}
> ERROR org.apache.hadoop.hdfs.server.blockmanagement.BlockManager: Thread 
> received Runtime exception.
> java.lang.NullPointerException
> at 
> org.apache.hadoop.hdfs.server.blockmanagement.BlockManager$StorageInfoDefragmenter.scanAndCompactStorages(BlockManager.java:3897)
> at 
> org.apache.hadoop.hdfs.server.blockmanagement.BlockManager$StorageInfoDefragmenter.run(BlockManager.java:3852)
> at java.lang.Thread.run(Thread.java:745)
> 2017-08-21 22:14:05,303 INFO org.apache.hadoop.util.ExitUtil: Exiting with 
> status 1
> 2017-08-21 22:14:05,313 INFO org.apache.hadoop.hdfs.server.namenode.NameNode: 
> {noformat}
> In that version, {{BlockManager}} code is:
> {code}
> 3896  try {
> 3897           DatanodeStorageInfo storage = datanodeManager.
> 3898                 getDatanode(datanodesAndStorages.get(i)).
> 3899                getStorageInfo(datanodesAndStorages.get(i + 1));
> 3900            if (storage != null) {
> {code}



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

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

Reply via email to