HDFS-7497. Inconsistent report of decommissioning DataNodes between dfsadmin and NameNode webui. Contributed by Yongjun Zhang.

(cherry picked from commit b437f5eef4)
This commit is contained in:
Andrew Wang 2014-12-11 18:12:47 -08:00
parent 5bc3aae6fb
commit 7f39cab356
3 changed files with 11 additions and 11 deletions

View File

@ -319,6 +319,9 @@ Release 2.7.0 - UNRELEASED
HDFS-7515. Fix new findbugs warnings in hadoop-hdfs. (wheat9)
HDFS-7497. Inconsistent report of decommissioning DataNodes between
dfsadmin and NameNode webui. (Yongjun Zhang via wang)
Release 2.6.1 - UNRELEASED
INCOMPATIBLE CHANGES

View File

@ -1111,16 +1111,8 @@ public class DatanodeManager {
public List<DatanodeDescriptor> getDecommissioningNodes() {
// There is no need to take namesystem reader lock as
// getDatanodeListForReport will synchronize on datanodeMap
final List<DatanodeDescriptor> decommissioningNodes
= new ArrayList<DatanodeDescriptor>();
final List<DatanodeDescriptor> results = getDatanodeListForReport(
DatanodeReportType.LIVE);
for(DatanodeDescriptor node : results) {
if (node.isDecommissionInProgress()) {
decommissioningNodes.add(node);
}
}
return decommissioningNodes;
// A decommissioning DN may be "alive" or "dead".
return getDatanodeListForReport(DatanodeReportType.DECOMMISSIONING);
}
/* Getter and Setter for stale DataNodes related attributes */

View File

@ -252,10 +252,10 @@ public class TestDecommissioningStatus {
System.setOut(oldOut);
}
}
/**
* Tests Decommissioning Status in DFS.
*/
@Test
public void testDecommissionStatus() throws IOException, InterruptedException {
InetSocketAddress addr = new InetSocketAddress("localhost", cluster
@ -363,6 +363,11 @@ public class TestDecommissioningStatus {
assertTrue("the node should be DECOMMISSION_IN_PROGRESSS",
dead.get(0).isDecommissionInProgress());
// Check DatanodeManager#getDecommissionNodes, make sure it returns
// the node as decommissioning, even if it's dead
List<DatanodeDescriptor> decomlist = dm.getDecommissioningNodes();
assertTrue("The node should be be decommissioning", decomlist.size() == 1);
// Delete the under-replicated file, which should let the
// DECOMMISSION_IN_PROGRESS node become DECOMMISSIONED
cleanupFile(fileSys, f);