Details

Description

Current implementation:
======================

DatanodeManager#removeDecomNodeFromList() , Decommissioned node will be removed from dead/live node list only if below conditions are met
I . If the Include list is not empty.
II. If include and exclude list does not have decommissioned node and node state is decommissioned.

if (!hostFileManager.hasIncludes()) {
return;
}
if ((!hostFileManager.isIncluded(node)) && (!hostFileManager.isExcluded(node))
&& node.isDecommissioned()) {
// Include list is not empty, an existing datanode does not appear
// in both include or exclude lists and it has been decommissioned.
// Remove it from the node list.
it.remove();
}

As mentioned in javadoc a datanode cannot be in "already decommissioned datanode state".
Following the steps mentioned in javadoc datanode state is "dead" and not decommissioned.

Can we avoid the unnecessary checks and have check for the node is in decommissioned state then remove from node list. ?
Please provide your feedback.