Details
-
Bug
-
Status: Resolved
-
Major
-
Resolution: Duplicate
-
2.4.1
-
None
-
None
Description
Balancer may throw NPE because the following if Statements at line 709 of Balancer.java
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); } } }
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.