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

He Xiaoqiao commented on HDFS-8992:
-----------------------------------

Actually, it can be fixed only add condition at {{if Statements}}
{code}
  synchronized (block) {
    // update locations
    for (String datanodeUuid : blk.getDatanodeUuids()) {
      final BalancerDatanode d = datanodeMap.get(datanodeUuid);
      if (datanode != null && null != d) { // not an unknown datanode
        block.addLocation(d);
      }
    }
  }
{code}

> Balancer throws NPE
> -------------------
>
>                 Key: HDFS-8992
>                 URL: https://issues.apache.org/jira/browse/HDFS-8992
>             Project: Hadoop HDFS
>          Issue Type: Bug
>          Components: balancer & mover
>    Affects Versions: 2.4.1
>            Reporter: He Xiaoqiao
>
> Balancer may throw NPE because the following {{if Statements}}
> {code:java|firstline=705}
>           synchronized (block) {
>             // update locations
>             for (String datanodeUuid : blk.getDatanodeUuids()) {
>               final BalancerDatanode d = datanodeMap.get(datanodeUuid);
>               if (datanode != null) { // not an unknown datanode
>                 block.addLocation(d);
>               }
>             }
>           }
> {code}
> Before moving block, Balancer divides into two step to get all DNs info & 
> some blocks of DN from NN. Regarding one DN commission after 
> {{getDatanodeReport}} then {{getBlockList}} and one block's target is above 
> DN just right, It will throw NPE when dispatcher.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to