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 ar...@apache.org on 2016/05/04 17:04:57 UTC
[04/16] hadoop git commit: HDFS-10344.
DistributedFileSystem#getTrashRoots should skip encryption zone that does not
have .Trash. Contributed by Xiaoyu Yao.
HDFS-10344. DistributedFileSystem#getTrashRoots should skip encryption zone that does not have .Trash. Contributed by Xiaoyu Yao.
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/45a753cc
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/45a753cc
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/45a753cc
Branch: refs/heads/HDFS-7240
Commit: 45a753ccf79d334513c7bc8f2b81c89a4697075d
Parents: 4ee4e5c
Author: Xiaoyu Yao <xy...@apache.org>
Authored: Mon May 2 19:30:47 2016 -0700
Committer: Xiaoyu Yao <xy...@apache.org>
Committed: Mon May 2 19:30:47 2016 -0700
----------------------------------------------------------------------
.../hadoop/hdfs/DistributedFileSystem.java | 3 ++
.../apache/hadoop/hdfs/TestEncryptionZones.java | 38 ++++++++++++++++++++
2 files changed, 41 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hadoop/blob/45a753cc/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/DistributedFileSystem.java
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/DistributedFileSystem.java b/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/DistributedFileSystem.java
index a3a8ba0..7a56265 100644
--- a/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/DistributedFileSystem.java
+++ b/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/DistributedFileSystem.java
@@ -2410,6 +2410,9 @@ public class DistributedFileSystem extends FileSystem {
while (it.hasNext()) {
Path ezTrashRoot = new Path(it.next().getPath(),
FileSystem.TRASH_PREFIX);
+ if (!exists(ezTrashRoot)) {
+ continue;
+ }
if (allUsers) {
for (FileStatus candidate : listStatus(ezTrashRoot)) {
if (exists(candidate.getPath())) {
http://git-wip-us.apache.org/repos/asf/hadoop/blob/45a753cc/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 c8d98ee..ce2befd 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
@@ -28,6 +28,7 @@ import java.net.URI;
import java.security.PrivilegedExceptionAction;
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.Collection;
import java.util.List;
import java.util.concurrent.Callable;
import java.util.concurrent.CountDownLatch;
@@ -1442,6 +1443,43 @@ public class TestEncryptionZones {
verifyShellDeleteWithTrash(shell, encFile);
}
+ @Test(timeout = 120000)
+ public void testGetTrashRoots() throws Exception {
+ final HdfsAdmin dfsAdmin =
+ new HdfsAdmin(FileSystem.getDefaultUri(conf), conf);
+ Path ezRoot1 = new Path("/ez1");
+ fs.mkdirs(ezRoot1);
+ dfsAdmin.createEncryptionZone(ezRoot1, TEST_KEY);
+ Path ezRoot2 = new Path("/ez2");
+ fs.mkdirs(ezRoot2);
+ dfsAdmin.createEncryptionZone(ezRoot2, TEST_KEY);
+ Path ezRoot3 = new Path("/ez3");
+ fs.mkdirs(ezRoot3);
+ dfsAdmin.createEncryptionZone(ezRoot3, TEST_KEY);
+ Collection<FileStatus> trashRootsBegin = fs.getTrashRoots(true);
+ assertEquals("Unexpected getTrashRoots result", 0, trashRootsBegin.size());
+
+ final Path encFile = new Path(ezRoot2, "encFile");
+ final int len = 8192;
+ DFSTestUtil.createFile(fs, encFile, len, (short) 1, 0xFEED);
+ Configuration clientConf = new Configuration(conf);
+ clientConf.setLong(FS_TRASH_INTERVAL_KEY, 1);
+ FsShell shell = new FsShell(clientConf);
+ verifyShellDeleteWithTrash(shell, encFile);
+
+ Collection<FileStatus> trashRootsDelete1 = fs.getTrashRoots(true);
+ assertEquals("Unexpected getTrashRoots result", 1,
+ trashRootsDelete1.size());
+
+ final Path nonEncFile = new Path("/nonEncFile");
+ DFSTestUtil.createFile(fs, nonEncFile, len, (short) 1, 0xFEED);
+ verifyShellDeleteWithTrash(shell, nonEncFile);
+
+ Collection<FileStatus> trashRootsDelete2 = fs.getTrashRoots(true);
+ assertEquals("Unexpected getTrashRoots result", 2,
+ trashRootsDelete2.size());
+ }
+
private void verifyShellDeleteWithTrash(FsShell shell, Path path)
throws Exception{
try {
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org