You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by le...@apache.org on 2016/02/12 05:34:04 UTC

hadoop git commit: HDFS-9795. OIV Delimited should show which files are ACL-enabled (lei)

Repository: hadoop
Updated Branches:
  refs/heads/trunk 8fdef0bd9 -> c7fcec24b


HDFS-9795. OIV Delimited should show which files are ACL-enabled (lei)


Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/c7fcec24
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/c7fcec24
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/c7fcec24

Branch: refs/heads/trunk
Commit: c7fcec24b845fc7c74cc50f16931305bb526dba6
Parents: 8fdef0b
Author: Lei Xu <le...@apache.org>
Authored: Thu Feb 11 20:33:51 2016 -0800
Committer: Lei Xu <le...@apache.org>
Committed: Thu Feb 11 20:33:51 2016 -0800

----------------------------------------------------------------------
 hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt     |  2 ++
 .../PBImageDelimitedTextWriter.java             |  6 +++-
 .../TestOfflineImageViewerForAcl.java           | 36 ++++++++++++++++++++
 3 files changed, 43 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hadoop/blob/c7fcec24/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt
index 612451c..e2463f1 100644
--- a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt
+++ b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt
@@ -223,6 +223,8 @@ Trunk (Unreleased)
     HDFS-9260. Improve the performance and GC friendliness of NameNode startup
     and full block reports (Staffan Friberg via cmccabe)
 
+    HDFS-9795. OIV Delimited should show which files are ACL-enabled (lei)
+
   OPTIMIZATIONS
 
   BUG FIXES

http://git-wip-us.apache.org/repos/asf/hadoop/blob/c7fcec24/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/tools/offlineImageViewer/PBImageDelimitedTextWriter.java
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/tools/offlineImageViewer/PBImageDelimitedTextWriter.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/tools/offlineImageViewer/PBImageDelimitedTextWriter.java
index 3ddc135..8fab34c 100644
--- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/tools/offlineImageViewer/PBImageDelimitedTextWriter.java
+++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/tools/offlineImageViewer/PBImageDelimitedTextWriter.java
@@ -85,11 +85,13 @@ public class PBImageDelimitedTextWriter extends PBImageTextWriter {
     buffer.append(path.toString());
     PermissionStatus p = null;
     boolean isDir = false;
+    boolean hasAcl = false;
 
     switch (inode.getType()) {
     case FILE:
       INodeFile file = inode.getFile();
       p = getPermission(file.getPermission());
+      hasAcl = file.hasAcl() && file.getAcl().getEntriesCount() > 0;
       append(buffer, file.getReplication());
       append(buffer, formatDate(file.getModificationTime()));
       append(buffer, formatDate(file.getAccessTime()));
@@ -102,6 +104,7 @@ public class PBImageDelimitedTextWriter extends PBImageTextWriter {
     case DIRECTORY:
       INodeDirectory dir = inode.getDirectory();
       p = getPermission(dir.getPermission());
+      hasAcl = dir.hasAcl() && dir.getAcl().getEntriesCount() > 0;
       append(buffer, 0);  // Replication
       append(buffer, formatDate(dir.getModificationTime()));
       append(buffer, formatDate(0));  // Access time.
@@ -129,7 +132,8 @@ public class PBImageDelimitedTextWriter extends PBImageTextWriter {
     }
     assert p != null;
     String dirString = isDir ? "d" : "-";
-    append(buffer, dirString + p.getPermission().toString());
+    String aclString = hasAcl ? "+" : "";
+    append(buffer, dirString + p.getPermission().toString() + aclString);
     append(buffer, p.getUserName());
     append(buffer, p.getGroupName());
     return buffer.toString();

http://git-wip-us.apache.org/repos/asf/hadoop/blob/c7fcec24/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/tools/offlineImageViewer/TestOfflineImageViewerForAcl.java
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/tools/offlineImageViewer/TestOfflineImageViewerForAcl.java b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/tools/offlineImageViewer/TestOfflineImageViewerForAcl.java
index 7104ba1..c66c2de 100644
--- a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/tools/offlineImageViewer/TestOfflineImageViewerForAcl.java
+++ b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/tools/offlineImageViewer/TestOfflineImageViewerForAcl.java
@@ -17,10 +17,13 @@
  */
 package org.apache.hadoop.hdfs.tools.offlineImageViewer;
 
+import java.io.BufferedReader;
+import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.File;
 import java.io.FileNotFoundException;
 import java.io.IOException;
+import java.io.InputStreamReader;
 import java.io.PrintStream;
 import java.io.RandomAccessFile;
 import java.io.StringReader;
@@ -226,4 +229,37 @@ public class TestOfflineImageViewerForAcl {
     final String xml = output.toString();
     parser.parse(new InputSource(new StringReader(xml)), new DefaultHandler());
   }
+
+  @Test
+  public void testPBDelimitedWriterForAcl() throws Exception {
+    final String DELIMITER = "\t";
+    ByteArrayOutputStream output = new ByteArrayOutputStream();
+
+    try (PrintStream o = new PrintStream(output)) {
+      PBImageDelimitedTextWriter v =
+          new PBImageDelimitedTextWriter(o, DELIMITER, "");  // run in memory.
+      v.visit(new RandomAccessFile(originalFsimage, "r"));
+    }
+
+    try (
+        ByteArrayInputStream input =
+            new ByteArrayInputStream(output.toByteArray());
+        BufferedReader reader =
+            new BufferedReader(new InputStreamReader(input))) {
+      String line;
+      boolean header = true;
+      while ((line = reader.readLine()) != null) {
+        String[] fields = line.split(DELIMITER);
+        if (!header) {
+          String filePath = fields[0];
+          String permission = fields[9];
+          if (!filePath.equals("/")) {
+            boolean hasAcl = !filePath.toLowerCase().contains("noacl");
+            assertEquals(hasAcl, permission.endsWith("+"));
+          }
+        }
+        header = false;
+      }
+    }
+  }
 }