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:
parent
5bc3aae6fb
commit
7f39cab356
|
@ -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
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue