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;
+ }
+ }
+ }
}