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

He Xiaoqiao updated HDFS-8993:
------------------------------
    Description: 
Balancer may throw NPE because the following {{if Statements}}
{code:title=Balancer.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.

  was:
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.


> Balancer throws NPE
> -------------------
>
>                 Key: HDFS-8993
>                 URL: https://issues.apache.org/jira/browse/HDFS-8993
>             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:title=Balancer.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