HDFS-9881. DistributedFileSystem#getTrashRoot returns incorrect path for encryption zones.

(cherry picked from commit 4abb2fa687a80d2b76f2751dd31513822601b235)
(cherry picked from commit 81b7b9de27300521b26c8598e3b7fbf88805e505)
This commit is contained in:
Andrew Wang 2016-03-01 16:35:39 -08:00
parent 2c8733a19d
commit 90f39b899c
3 changed files with 12 additions and 1 deletions

View File

@ -2350,7 +2350,7 @@ public Path getTrashRoot(Path path) {
EncryptionZone ez = dfs.getEZForPath(parentSrc);
if ((ez != null)) {
return this.makeQualified(
new Path(ez.getPath(), FileSystem.TRASH_PREFIX +
new Path(new Path(ez.getPath(), FileSystem.TRASH_PREFIX),
dfs.ugi.getShortUserName()));
}
} catch (IOException e) {

View File

@ -1822,6 +1822,9 @@ Release 2.8.0 - UNRELEASED
HDFS-9870. Remove unused imports from DFSUtil.
(Brahma Reddy Battula via cnauroth)
HDFS-9881. DistributedFileSystem#getTrashRoot returns incorrect path for
encryption zones. (wang)
Release 2.7.3 - UNRELEASED
INCOMPATIBLE CHANGES

View File

@ -1445,6 +1445,14 @@ public void testRootDirEZTrash() throws Exception {
private void verifyShellDeleteWithTrash(FsShell shell, Path path)
throws Exception{
try {
Path trashDir = shell.getCurrentTrashDir(path);
// Verify that trashDir has a path component named ".Trash"
Path checkTrash = trashDir;
while (!checkTrash.isRoot() && !checkTrash.getName().equals(".Trash")) {
checkTrash = checkTrash.getParent();
}
assertEquals("No .Trash component found in trash dir " + trashDir,
".Trash", checkTrash.getName());
final Path trashFile =
new Path(shell.getCurrentTrashDir(path) + "/" + path);
String[] argv = new String[]{"-rm", "-r", path.toString()};