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 ma...@apache.org on 2018/09/07 18:39:47 UTC
hadoop git commit: HDFS-13744. OIV tool should better handle control
characters present in file or directory names. Contributed by Zsolt Venczel.
Repository: hadoop
Updated Branches:
refs/heads/trunk 3dc2988a3 -> 410dd3faa
HDFS-13744. OIV tool should better handle control characters present in file or directory names. Contributed by Zsolt Venczel.
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/410dd3fa
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/410dd3fa
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/410dd3fa
Branch: refs/heads/trunk
Commit: 410dd3faa55660b60e1292e2816b135cb476751e
Parents: 3dc2988
Author: Sean Mackrory <ma...@apache.org>
Authored: Fri Sep 7 12:34:31 2018 -0600
Committer: Sean Mackrory <ma...@apache.org>
Committed: Fri Sep 7 12:39:33 2018 -0600
----------------------------------------------------------------------
.../PBImageDelimitedTextWriter.java | 18 +++++++++++++++---
.../TestOfflineImageViewer.java | 17 +++++++++++++++++
2 files changed, 32 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hadoop/blob/410dd3fa/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 8fab34c..20a8350 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
@@ -17,6 +17,8 @@
*/
package org.apache.hadoop.hdfs.tools.offlineImageViewer;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.text.StringEscapeUtils;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.fs.permission.PermissionStatus;
import org.apache.hadoop.hdfs.server.namenode.FsImageProto.INodeSection.INode;
@@ -71,9 +73,19 @@ public class PBImageDelimitedTextWriter extends PBImageTextWriter {
buffer.append(field);
}
+ static final String CRLF = StringUtils.CR + StringUtils.LF;
+
private void append(StringBuffer buffer, String field) {
buffer.append(delimiter);
- buffer.append(field);
+
+ String escapedField = StringEscapeUtils.escapeCsv(field);
+ if (escapedField.contains(CRLF)) {
+ escapedField = escapedField.replace(CRLF, "%x0D%x0A");
+ } else if (escapedField.contains(StringUtils.LF)) {
+ escapedField = escapedField.replace(StringUtils.LF, "%x0A");
+ }
+
+ buffer.append(escapedField);
}
@Override
@@ -82,7 +94,7 @@ public class PBImageDelimitedTextWriter extends PBImageTextWriter {
String inodeName = inode.getName().toStringUtf8();
Path path = new Path(parent.isEmpty() ? "/" : parent,
inodeName.isEmpty() ? "/" : inodeName);
- buffer.append(path.toString());
+ append(buffer, path.toString());
PermissionStatus p = null;
boolean isDir = false;
boolean hasAcl = false;
@@ -136,7 +148,7 @@ public class PBImageDelimitedTextWriter extends PBImageTextWriter {
append(buffer, dirString + p.getPermission().toString() + aclString);
append(buffer, p.getUserName());
append(buffer, p.getGroupName());
- return buffer.toString();
+ return buffer.substring(1);
}
@Override
http://git-wip-us.apache.org/repos/asf/hadoop/blob/410dd3fa/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/tools/offlineImageViewer/TestOfflineImageViewer.java
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/tools/offlineImageViewer/TestOfflineImageViewer.java b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/tools/offlineImageViewer/TestOfflineImageViewer.java
index d36be4f..16b35dc 100644
--- a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/tools/offlineImageViewer/TestOfflineImageViewer.java
+++ b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/tools/offlineImageViewer/TestOfflineImageViewer.java
@@ -27,6 +27,8 @@ import static org.apache.hadoop.fs.permission.AclEntryType.USER;
import static org.apache.hadoop.fs.permission.FsAction.ALL;
import static org.apache.hadoop.fs.permission.FsAction.EXECUTE;
import static org.apache.hadoop.fs.permission.FsAction.READ_EXECUTE;
+
+import org.apache.commons.lang3.StringUtils;
import org.apache.hadoop.hdfs.protocol.AddErasureCodingPolicyResponse;
import org.apache.hadoop.hdfs.protocol.ErasureCodingPolicyState;
import static org.apache.hadoop.hdfs.server.namenode.AclTestHelpers.aclEntry;
@@ -209,6 +211,21 @@ public class TestOfflineImageViewer {
writtenFiles.put(entityRefXMLDir.toString(),
hdfs.getFileStatus(entityRefXMLDir));
+ //Create directories with new line characters
+ Path newLFDir = new Path("/dirContainingNewLineChar"
+ + StringUtils.LF + "here");
+ hdfs.mkdirs(newLFDir);
+ dirCount++;
+ writtenFiles.put("\"/dirContainingNewLineChar%x0Ahere\"",
+ hdfs.getFileStatus(newLFDir));
+
+ Path newCRLFDir = new Path("/dirContainingNewLineChar"
+ + PBImageDelimitedTextWriter.CRLF + "here");
+ hdfs.mkdirs(newCRLFDir);
+ dirCount++;
+ writtenFiles.put("\"/dirContainingNewLineChar%x0D%x0Ahere\"",
+ hdfs.getFileStatus(newCRLFDir));
+
//Create a directory with sticky bits
Path stickyBitDir = new Path("/stickyBit");
hdfs.mkdirs(stickyBitDir);
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org