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

(cherry picked from commit 4abb2fa687)
This commit is contained in:
Andrew Wang 2016-03-01 16:35:39 -08:00
parent bcbff207d6
commit 81b7b9de27
3 changed files with 12 additions and 1 deletions

View File

@ -2350,7 +2350,7 @@ public class DistributedFileSystem extends FileSystem {
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

@ -1914,6 +1914,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 class TestEncryptionZones {
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()};