diff --git a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt index 4270a9c3b35..7fd3495f0e4 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt +++ b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt @@ -868,6 +868,8 @@ Release 2.7.1 - UNRELEASED HDFS-6300. Prevent multiple balancers from running simultaneously (Rakesh R via vinayakumarb) + HDFS-8405. Fix a typo in NamenodeFsck. (Takanobu Asanuma via szetszwo) + Release 2.7.0 - 2015-04-20 INCOMPATIBLE CHANGES diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FsckServlet.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FsckServlet.java index 6fb3d218bff..5fae9cd4890 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FsckServlet.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FsckServlet.java @@ -66,7 +66,7 @@ public class FsckServlet extends DfsServlet { namesystem.getNumberOfDatanodes(DatanodeReportType.LIVE); new NamenodeFsck(conf, nn, bm.getDatanodeManager().getNetworkTopology(), pmap, out, - totalDatanodes, bm.minReplication, remoteAddress).fsck(); + totalDatanodes, remoteAddress).fsck(); return null; } diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/NamenodeFsck.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/NamenodeFsck.java index 61f8fdb2863..44dba289a47 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/NamenodeFsck.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/NamenodeFsck.java @@ -121,7 +121,6 @@ public class NamenodeFsck implements DataEncryptionKeyFactory { private final NameNode namenode; private final NetworkTopology networktopology; private final int totalDatanodes; - private final short minReplication; private final InetAddress remoteAddress; private String lostFound = null; @@ -181,19 +180,17 @@ public class NamenodeFsck implements DataEncryptionKeyFactory { * @param pmap key=value[] map passed to the http servlet as url parameters * @param out output stream to write the fsck output * @param totalDatanodes number of live datanodes - * @param minReplication minimum replication * @param remoteAddress source address of the fsck request */ NamenodeFsck(Configuration conf, NameNode namenode, NetworkTopology networktopology, Map pmap, PrintWriter out, - int totalDatanodes, short minReplication, InetAddress remoteAddress) { + int totalDatanodes, InetAddress remoteAddress) { this.conf = conf; this.namenode = namenode; this.networktopology = networktopology; this.out = out; this.totalDatanodes = totalDatanodes; - this.minReplication = minReplication; this.remoteAddress = remoteAddress; this.bpPolicy = BlockPlacementPolicy.getInstance(conf, null, networktopology, @@ -308,7 +305,6 @@ public class NamenodeFsck implements DataEncryptionKeyFactory { final long startTime = Time.monotonicNow(); try { if(blockIds != null) { - String[] blocks = blockIds.split(" "); StringBuilder sb = new StringBuilder(); sb.append("FSCK started by " + @@ -561,7 +557,7 @@ public class NamenodeFsck implements DataEncryptionKeyFactory { res.numExpectedReplicas += targetFileReplication; // count under min repl'd blocks - if(totalReplicasPerBlock < minReplication){ + if(totalReplicasPerBlock < res.minReplication){ res.numUnderMinReplicatedBlocks++; } @@ -582,7 +578,7 @@ public class NamenodeFsck implements DataEncryptionKeyFactory { } // count minimally replicated blocks - if (totalReplicasPerBlock >= minReplication) + if (totalReplicasPerBlock >= res.minReplication) res.numMinReplicatedBlocks++; // count missing replicas / under replicated blocks @@ -601,7 +597,7 @@ public class NamenodeFsck implements DataEncryptionKeyFactory { decommissioningReplicas + " decommissioning replica(s)."); } - // count mis replicated blocks block + // count mis replicated blocks BlockPlacementStatus blockPlacementStatus = bpPolicy .verifyBlockPlacement(path, lBlk, targetFileReplication); if (!blockPlacementStatus.isPlacementPolicySatisfied()) { @@ -724,8 +720,8 @@ public class NamenodeFsck implements DataEncryptionKeyFactory { private void countStorageTypeSummary(HdfsFileStatus file, LocatedBlock lBlk) { StorageType[] storageTypes = lBlk.getStorageTypes(); storageTypeSummary.add(Arrays.copyOf(storageTypes, storageTypes.length), - namenode.getNamesystem().getBlockManager() - .getStoragePolicy(file.getStoragePolicy())); + namenode.getNamesystem().getBlockManager() + .getStoragePolicy(file.getStoragePolicy())); } private void deleteCorruptedFile(String path) { @@ -1069,7 +1065,7 @@ public class NamenodeFsck implements DataEncryptionKeyFactory { ((float) (numUnderMinReplicatedBlocks * 100) / (float) totalBlocks)) .append(" %)"); } - res.append("\n ").append("DFSConfigKeys.DFS_NAMENODE_REPLICATION_MIN_KEY:\t") + res.append("\n ").append(DFSConfigKeys.DFS_NAMENODE_REPLICATION_MIN_KEY + ":\t") .append(minReplication); } if(corruptFiles>0) { diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestFsck.java b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestFsck.java index 1ce09e17673..7f31f84bc28 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestFsck.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestFsck.java @@ -785,7 +785,7 @@ public class TestFsck { System.out.println(outStr); assertTrue(outStr.contains(NamenodeFsck.HEALTHY_STATUS)); assertTrue(outStr.contains("UNDER MIN REPL'D BLOCKS:\t1 (100.0 %)")); - assertTrue(outStr.contains("DFSConfigKeys.DFS_NAMENODE_REPLICATION_MIN_KEY:\t2")); + assertTrue(outStr.contains("dfs.namenode.replication.min:\t2")); } finally { if (cluster != null) {cluster.shutdown();} } @@ -1052,7 +1052,7 @@ public class TestFsck { PrintWriter out = new PrintWriter(result, true); InetAddress remoteAddress = InetAddress.getLocalHost(); NamenodeFsck fsck = new NamenodeFsck(conf, namenode, nettop, pmap, out, - NUM_REPLICAS, (short)1, remoteAddress); + NUM_REPLICAS, remoteAddress); // Run the fsck and check the Result final HdfsFileStatus file = @@ -1129,7 +1129,7 @@ public class TestFsck { PrintWriter out = new PrintWriter(result, true); InetAddress remoteAddress = InetAddress.getLocalHost(); NamenodeFsck fsck = new NamenodeFsck(conf, namenode, nettop, pmap, out, - NUM_DN, REPL_FACTOR, remoteAddress); + NUM_DN, remoteAddress); // Run the fsck and check the Result final HdfsFileStatus file = @@ -1176,7 +1176,7 @@ public class TestFsck { when(blockManager.getDatanodeManager()).thenReturn(dnManager); NamenodeFsck fsck = new NamenodeFsck(conf, namenode, nettop, pmap, out, - NUM_REPLICAS, (short)1, remoteAddress); + NUM_REPLICAS, remoteAddress); String pathString = "/tmp/testFile";