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 so...@apache.org on 2021/03/23 15:58:29 UTC
[hadoop] 02/02: HDFS-15093. RENAME.TO_TRASH is ignored When
RENAME.OVERWRITE is specified. Contributed by Ayush Saxena.
This is an automated email from the ASF dual-hosted git repository.
sodonnell pushed a commit to branch branch-3.3
in repository https://gitbox.apache.org/repos/asf/hadoop.git
commit b26d75ce37128dcfda37c52c8bfc8b465ce71d48
Author: Ayush Saxena <ay...@apache.org>
AuthorDate: Sat May 23 18:38:32 2020 +0530
HDFS-15093. RENAME.TO_TRASH is ignored When RENAME.OVERWRITE is specified. Contributed by Ayush Saxena.
(cherry picked from commit e0ae232f669b2e2a6654cfacff22a090c462effc)
---
.../ClientNamenodeProtocolTranslatorPB.java | 3 ++-
...lientNamenodeProtocolServerSideTranslatorPB.java | 3 ++-
.../java/org/apache/hadoop/hdfs/TestDFSRename.java | 21 +++++++++++++++++++++
3 files changed, 25 insertions(+), 2 deletions(-)
diff --git a/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/protocolPB/ClientNamenodeProtocolTranslatorPB.java b/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/protocolPB/ClientNamenodeProtocolTranslatorPB.java
index 35b52b5..6cdce59 100644
--- a/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/protocolPB/ClientNamenodeProtocolTranslatorPB.java
+++ b/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/protocolPB/ClientNamenodeProtocolTranslatorPB.java
@@ -609,7 +609,8 @@ public class ClientNamenodeProtocolTranslatorPB implements
for (Rename option : options) {
if (option == Rename.OVERWRITE) {
overwrite = true;
- } else if (option == Rename.TO_TRASH) {
+ }
+ if (option == Rename.TO_TRASH) {
toTrash = true;
}
}
diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/protocolPB/ClientNamenodeProtocolServerSideTranslatorPB.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/protocolPB/ClientNamenodeProtocolServerSideTranslatorPB.java
index 9bd8248..e0afe00 100644
--- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/protocolPB/ClientNamenodeProtocolServerSideTranslatorPB.java
+++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/protocolPB/ClientNamenodeProtocolServerSideTranslatorPB.java
@@ -688,7 +688,8 @@ public class ClientNamenodeProtocolServerSideTranslatorPB implements
ArrayList<Rename> optionList = new ArrayList<Rename>();
if(req.getOverwriteDest()) {
optionList.add(Rename.OVERWRITE);
- } else if(req.hasMoveToTrash() && req.getMoveToTrash()) {
+ }
+ if (req.hasMoveToTrash() && req.getMoveToTrash()) {
optionList.add(Rename.TO_TRASH);
}
diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestDFSRename.java b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestDFSRename.java
index e7002c3..fe2eee2 100644
--- a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestDFSRename.java
+++ b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestDFSRename.java
@@ -30,7 +30,9 @@ import org.apache.hadoop.fs.Path;
import org.apache.hadoop.fs.Options.Rename;
import org.apache.hadoop.hdfs.protocol.LocatedBlocks;
import org.apache.hadoop.hdfs.server.blockmanagement.BlockManager;
+import org.apache.hadoop.hdfs.server.namenode.FSNamesystem;
import org.apache.hadoop.hdfs.server.namenode.NameNodeAdapter;
+import org.apache.hadoop.test.GenericTestUtils;
import org.junit.Test;
public class TestDFSRename {
@@ -175,4 +177,23 @@ public class TestDFSRename {
}
}
}
+
+ @Test
+ public void testRename2Options() throws Exception {
+ try (MiniDFSCluster cluster = new MiniDFSCluster.Builder(
+ new HdfsConfiguration()).build()) {
+ cluster.waitActive();
+ final DistributedFileSystem dfs = cluster.getFileSystem();
+ Path path = new Path("/test");
+ dfs.mkdirs(path);
+ GenericTestUtils.LogCapturer auditLog =
+ GenericTestUtils.LogCapturer.captureLogs(FSNamesystem.auditLog);
+ dfs.rename(path, new Path("/dir1"),
+ new Rename[] {Rename.OVERWRITE, Rename.TO_TRASH});
+ String auditOut = auditLog.getOutput();
+ assertTrue("Rename should have both OVERWRITE and TO_TRASH "
+ + "flags at namenode but had only " + auditOut,
+ auditOut.contains("options=[OVERWRITE, TO_TRASH]"));
+ }
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org