Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
None
Description
It's observed that dfsadmin report list DNs in the decomm state while NN UI list DNs in dead state.
I found what happens is:
NN webui uses two steps to get the result:
- first collect a list of all alive DNs,
- traverse through all live DNs to find decommissioning DNs.
It calls the following method to decide whether a DN is dead or alive:
/** Is the datanode dead? */ boolean isDatanodeDead(DatanodeDescriptor node) { return (node.getLastUpdate() < (Time.now() - heartbeatExpireInterval)); }
On the other hand, dfsadmin traverse all DNs to find to all decommissioning DNs (check whether a DN is in AdminStates.DECOMMISSION_INPROGRESS state), without checking whether a DN is dead or alive like above.
The problem is, when a DN is determined to be dead, its state may still be AdminStates.DECOMMISSION_INPROGRESS .