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

Reply via email to