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 sh...@apache.org on 2018/06/04 22:01:36 UTC
[21/30] hadoop git commit: HDFS-13281 Namenode#createFile should be
/.reserved/raw/ aware.. Contributed by Rushabh S Shah
HDFS-13281 Namenode#createFile should be /.reserved/raw/ aware.. Contributed by Rushabh S Shah
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/e2289c8d
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/e2289c8d
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/e2289c8d
Branch: refs/heads/HDFS-12943
Commit: e2289c8d1496a5eff88e6bcb8776a11d45371ffc
Parents: bccdfee
Author: Rushabh Shah <sh...@apache.org>
Authored: Mon Jun 4 09:19:03 2018 -0500
Committer: Rushabh Shah <sh...@apache.org>
Committed: Mon Jun 4 09:19:03 2018 -0500
----------------------------------------------------------------------
.../hdfs/server/namenode/FSNamesystem.java | 2 +-
.../apache/hadoop/hdfs/TestEncryptionZones.java | 29 ++++++++++++++++++++
2 files changed, 30 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hadoop/blob/e2289c8d/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java
index c02eb84..19ff08d 100644
--- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java
+++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java
@@ -2416,7 +2416,7 @@ public class FSNamesystem implements Namesystem, FSNamesystemMBean,
}
FileEncryptionInfo feInfo = null;
- if (provider != null) {
+ if (!iip.isRaw() && provider != null) {
EncryptionKeyInfo ezInfo = FSDirEncryptionZoneOp.getEncryptionKeyInfo(
this, iip, supportedVersions);
// if the path has an encryption zone, the lock was released while
http://git-wip-us.apache.org/repos/asf/hadoop/blob/e2289c8d/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestEncryptionZones.java
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestEncryptionZones.java b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestEncryptionZones.java
index 6f9ef29..d8524ae 100644
--- a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestEncryptionZones.java
+++ b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestEncryptionZones.java
@@ -21,6 +21,7 @@ import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
+import java.io.OutputStream;
import java.io.PrintStream;
import java.io.RandomAccessFile;
import java.io.StringReader;
@@ -77,6 +78,7 @@ import org.apache.hadoop.hdfs.protocol.LocatedBlocks;
import org.apache.hadoop.hdfs.protocol.HdfsConstants.SafeModeAction;
import org.apache.hadoop.hdfs.protocol.SnapshotDiffReport.DiffReportEntry;
import org.apache.hadoop.hdfs.protocol.SnapshotDiffReport.DiffType;
+import org.apache.hadoop.hdfs.server.common.HdfsServerConstants;
import org.apache.hadoop.hdfs.server.namenode.EncryptionFaultInjector;
import org.apache.hadoop.hdfs.server.namenode.EncryptionZoneManager;
import org.apache.hadoop.hdfs.server.namenode.FSImageTestUtil;
@@ -2302,4 +2304,31 @@ public class TestEncryptionZones {
Assert.assertEquals((data[i] & 0XFF), in.read());
}
}
+
+ /**
+ * Tests that namenode doesn't generate edek if we are writing to
+ * /.reserved/raw directory.
+ * @throws Exception
+ */
+ @Test
+ public void testWriteToEZReservedRaw() throws Exception {
+ String unEncryptedBytes = "hello world";
+ // Create an Encryption Zone.
+ final Path zonePath = new Path("/zone");
+ fsWrapper.mkdir(zonePath, FsPermission.getDirDefault(), false);
+ dfsAdmin.createEncryptionZone(zonePath, TEST_KEY, NO_TRASH);
+ Path p1 = new Path(zonePath, "p1");
+ Path reservedRawPath = new Path("/.reserved/raw/" + p1.toString());
+ // Create an empty file with /.reserved/raw/ path.
+ OutputStream os = fs.create(reservedRawPath);
+ os.close();
+ try {
+ fs.getXAttr(reservedRawPath, HdfsServerConstants
+ .CRYPTO_XATTR_FILE_ENCRYPTION_INFO);
+ fail("getXAttr should have thrown an exception");
+ } catch (IOException ioe) {
+ assertExceptionContains("At least one of the attributes provided was " +
+ "not found.", ioe);
+ }
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org