From aa16173a0d31ab6f68c3e5ba8aab586a4f53ce77 Mon Sep 17 00:00:00 2001 From: Steve Loughran Date: Tue, 27 Jan 2015 11:10:46 +0000 Subject: [PATCH] HDFS-49. MiniDFSCluster.stopDataNode will always shut down a node in the cluster if a matching name is not found. (stevel) --- hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt | 3 +++ .../java/org/apache/hadoop/hdfs/MiniDFSCluster.java | 11 ++++++++--- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt index 1220678d92b..8a32277dcc3 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt +++ b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt @@ -505,6 +505,9 @@ Release 2.7.0 - UNRELEASED HDFS-7676. Fix TestFileTruncate to avoid bug of HDFS-7611. (shv) + HDFS-49. MiniDFSCluster.stopDataNode will always shut down a node in + the cluster if a matching name is not found. (stevel) + Release 2.6.1 - UNRELEASED INCOMPATIBLE CHANGES diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/MiniDFSCluster.java b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/MiniDFSCluster.java index f293eb52f90..fc173cadb4f 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/MiniDFSCluster.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/MiniDFSCluster.java @@ -1926,6 +1926,9 @@ public boolean changeGenStampOfBlock(int dnIndex, ExtendedBlock blk, /* * Shutdown a particular datanode + * @param i node index + * @return null if the node index is out of range, else the properties of the + * removed node */ public synchronized DataNodeProperties stopDataNode(int i) { if (i < 0 || i >= dataNodes.size()) { @@ -1944,18 +1947,20 @@ public synchronized DataNodeProperties stopDataNode(int i) { /* * Shutdown a datanode by name. + * @return the removed datanode or null if there was no match */ public synchronized DataNodeProperties stopDataNode(String dnName) { - int i; - for (i = 0; i < dataNodes.size(); i++) { + int node = -1; + for (int i = 0; i < dataNodes.size(); i++) { DataNode dn = dataNodes.get(i).datanode; LOG.info("DN name=" + dnName + " found DN=" + dn + " with name=" + dn.getDisplayName()); if (dnName.equals(dn.getDatanodeId().getXferAddr())) { + node = i; break; } } - return stopDataNode(i); + return stopDataNode(node); } /**