Repository: hadoop Updated Branches: refs/heads/branch-3.0 4b606eb9f -> d502abe94
HDFS-13738. fsck -list-corruptfileblocks has infinite loop if user is not privileged. Contributed by Yuen-Kuei Hsueh. (cherry picked from commit 4023eeba05aefe48384e870da3c95bb3af474514) (cherry picked from commit 74d4fd975a1f67ae3e1b67554319e1f5e525ed6f) Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/d502abe9 Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/d502abe9 Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/d502abe9 Branch: refs/heads/branch-3.0 Commit: d502abe94740b4af9434d678e7e4745aa3f010ba Parents: 4b606eb Author: Wei-Chiu Chuang <weic...@apache.org> Authored: Mon Aug 13 17:36:13 2018 -0700 Committer: Wei-Chiu Chuang <weic...@apache.org> Committed: Mon Aug 13 17:37:36 2018 -0700 ---------------------------------------------------------------------- .../java/org/apache/hadoop/hdfs/tools/DFSck.java | 6 ++++++ .../hadoop/hdfs/server/namenode/TestFsck.java | 18 ++++++++++++++++++ 2 files changed, 24 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hadoop/blob/d502abe9/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/tools/DFSck.java ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/tools/DFSck.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/tools/DFSck.java index 96fca24..97aa360 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/tools/DFSck.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/tools/DFSck.java @@ -210,8 +210,14 @@ public class DFSck extends Configured implements Tool { allDone = true; break; } + if (line.startsWith("Access denied for user")) { + out.println("Failed to open path '" + dir + "': Permission denied"); + errCode = -1; + return errCode; + } if ((line.isEmpty()) || (line.startsWith("FSCK started by")) + || (line.startsWith("FSCK ended at")) || (line.startsWith("The filesystem under path"))) continue; numCorrupt++; http://git-wip-us.apache.org/repos/asf/hadoop/blob/d502abe9/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestFsck.java ---------------------------------------------------------------------- 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 bb27d04..2b5d762 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 @@ -2488,4 +2488,22 @@ public class TestFsck { runFsck(cluster.getConfiguration(0), 0, true, "/"); } } + + @Test + public void testFsckNonPrivilegedListCorrupt() throws Exception { + cluster = new MiniDFSCluster.Builder(conf).numDataNodes(4).build(); + UserGroupInformation ugi = UserGroupInformation.createUserForTesting("systest", new String[]{""}); + ugi.doAs(new PrivilegedExceptionAction<Void>() { + @Override + public Void run() throws Exception { + String path = "/"; + String outStr = runFsck(conf, -1, true, path, "-list-corruptfileblocks"); + + assertFalse(outStr.contains("The list of corrupt files under path '" + path + "' are:")); + assertFalse(outStr.contains("The filesystem under path '" + path + "' has ")); + assertTrue(outStr.contains("Failed to open path '" + path + "': Permission denied")); + return null; + } + }); + } } --------------------------------------------------------------------- To unsubscribe, e-mail: common-commits-unsubscr...@hadoop.apache.org For additional commands, e-mail: common-commits-h...@hadoop.apache.org