This is an automated email from the ASF dual-hosted git repository.
agupta pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ozone.git
The following commit(s) were added to refs/heads/master by this push:
new f3cdbd9592 HDDS-4838. Deleting at bucket root throws NPE. (#5239)
f3cdbd9592 is described below
commit f3cdbd9592edbc85d038e4c36ffa8bfba92ad227
Author: Sadanand Shenoy <[email protected]>
AuthorDate: Thu Sep 7 14:01:22 2023 +0530
HDDS-4838. Deleting at bucket root throws NPE. (#5239)
---
.../org/apache/hadoop/fs/ozone/TestOzoneFileSystem.java | 17 ++++++++++++++++-
.../apache/hadoop/fs/ozone/BasicOzoneFileSystem.java | 2 +-
.../hadoop/fs/ozone/BasicRootedOzoneFileSystem.java | 2 +-
3 files changed, 18 insertions(+), 3 deletions(-)
diff --git
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/fs/ozone/TestOzoneFileSystem.java
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/fs/ozone/TestOzoneFileSystem.java
index 4c9610cc03..118a4117b6 100644
---
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/fs/ozone/TestOzoneFileSystem.java
+++
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/fs/ozone/TestOzoneFileSystem.java
@@ -32,6 +32,7 @@ import org.apache.hadoop.fs.PathIsNotEmptyDirectoryException;
import org.apache.hadoop.fs.RemoteIterator;
import org.apache.hadoop.fs.Trash;
import org.apache.hadoop.fs.TrashPolicy;
+import org.apache.hadoop.fs.TrashPolicyDefault;
import org.apache.hadoop.fs.contract.ContractTestUtils;
import org.apache.hadoop.fs.permission.FsPermission;
import org.apache.hadoop.hdds.client.ECReplicationConfig;
@@ -1515,7 +1516,7 @@ public class TestOzoneFileSystem {
Path inPath1 = new Path("o3fs://bucket2.volume1/path/to/key");
// Test with current user
Path outPath1 = o3fs.getTrashRoot(inPath1);
- Path expectedOutPath1 = new Path(TRASH_ROOT, username);
+ Path expectedOutPath1 = o3fs.makeQualified(new Path(TRASH_ROOT, username));
Assert.assertEquals(expectedOutPath1, outPath1);
}
@@ -1615,6 +1616,20 @@ public class TestOzoneFileSystem {
Assert.assertEquals(6, res.size());
}
+ @Test
+ public void testDeleteRootWithTrash() throws IOException {
+ // Try to delete root
+ Path root = new Path(OZONE_URI_DELIMITER);
+ Assert.assertThrows(IOException.class, () -> trash.moveToTrash(root));
+ // Also try with TrashPolicyDefault
+ OzoneConfiguration conf2 = new OzoneConfiguration(cluster.getConf());
+ conf2.setClass("fs.trash.classname", TrashPolicyDefault.class,
+ TrashPolicy.class);
+ Trash trashPolicyDefault = new Trash(conf2);
+ Assert.assertThrows(IOException.class,
+ () -> trashPolicyDefault.moveToTrash(root));
+ }
+
/**
* 1.Move a Key to Trash
* 2.Verify that the key gets deleted by the trash emptier.
diff --git
a/hadoop-ozone/ozonefs-common/src/main/java/org/apache/hadoop/fs/ozone/BasicOzoneFileSystem.java
b/hadoop-ozone/ozonefs-common/src/main/java/org/apache/hadoop/fs/ozone/BasicOzoneFileSystem.java
index 62fbfeac16..241abc79bd 100644
---
a/hadoop-ozone/ozonefs-common/src/main/java/org/apache/hadoop/fs/ozone/BasicOzoneFileSystem.java
+++
b/hadoop-ozone/ozonefs-common/src/main/java/org/apache/hadoop/fs/ozone/BasicOzoneFileSystem.java
@@ -744,7 +744,7 @@ public class BasicOzoneFileSystem extends FileSystem {
@Override
public Path getTrashRoot(Path path) {
final Path pathToTrash = new Path(OZONE_URI_DELIMITER, TRASH_PREFIX);
- return new Path(pathToTrash, getUsername());
+ return this.makeQualified(new Path(pathToTrash, getUsername()));
}
/**
diff --git
a/hadoop-ozone/ozonefs-common/src/main/java/org/apache/hadoop/fs/ozone/BasicRootedOzoneFileSystem.java
b/hadoop-ozone/ozonefs-common/src/main/java/org/apache/hadoop/fs/ozone/BasicRootedOzoneFileSystem.java
index c3ce1ad0d8..6873b23f2a 100644
---
a/hadoop-ozone/ozonefs-common/src/main/java/org/apache/hadoop/fs/ozone/BasicRootedOzoneFileSystem.java
+++
b/hadoop-ozone/ozonefs-common/src/main/java/org/apache/hadoop/fs/ozone/BasicRootedOzoneFileSystem.java
@@ -964,7 +964,7 @@ public class BasicRootedOzoneFileSystem extends FileSystem {
public Path getTrashRoot(Path path) {
OFSPath ofsPath = new OFSPath(path,
OzoneConfiguration.of(getConfSource()));
- return ofsPath.getTrashRoot();
+ return this.makeQualified(ofsPath.getTrashRoot());
}
/**
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]