diff --git a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt index cb2679ab9b4..c98d918be1d 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt +++ b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt @@ -889,6 +889,9 @@ Release 2.8.0 - UNRELEASED HDFS-8593. Calculation of effective layout version mishandles comparison to current layout version in storage. (cnauroth) + HDFS-8607. TestFileCorruption doesn't work as expected. (Walter Su via + Arpit Agarwal) + Release 2.7.1 - UNRELEASED INCOMPATIBLE CHANGES diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestFileCorruption.java b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestFileCorruption.java index 8001bfb4078..8e0ffe7de98 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestFileCorruption.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestFileCorruption.java @@ -27,8 +27,12 @@ import java.io.DataOutputStream; import java.io.File; import java.io.FileOutputStream; import java.util.ArrayList; +import java.util.Collection; import java.util.List; +import org.apache.commons.io.FileUtils; +import org.apache.commons.io.filefilter.DirectoryFileFilter; +import org.apache.commons.io.filefilter.PrefixFileFilter; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.ChecksumException; import org.apache.hadoop.fs.FileSystem; @@ -74,14 +78,13 @@ public class TestFileCorruption { String bpid = cluster.getNamesystem().getBlockPoolId(); File data_dir = MiniDFSCluster.getFinalizedDir(storageDir, bpid); assertTrue("data directory does not exist", data_dir.exists()); - File[] blocks = data_dir.listFiles(); - assertTrue("Blocks do not exist in data-dir", (blocks != null) && (blocks.length > 0)); - for (int idx = 0; idx < blocks.length; idx++) { - if (!blocks[idx].getName().startsWith(Block.BLOCK_FILE_PREFIX)) { - continue; - } - System.out.println("Deliberately removing file "+blocks[idx].getName()); - assertTrue("Cannot remove file.", blocks[idx].delete()); + Collection blocks = FileUtils.listFiles(data_dir, + new PrefixFileFilter(Block.BLOCK_FILE_PREFIX), + DirectoryFileFilter.DIRECTORY); + assertTrue("Blocks do not exist in data-dir", blocks.size() > 0); + for (File block : blocks) { + System.out.println("Deliberately removing file " + block.getName()); + assertTrue("Cannot remove file.", block.delete()); } assertTrue("Corrupted replicas not handled properly.", util.checkFiles(fs, "/srcdat"));