HDFS-9844. Correct path creation in getTrashRoot to handle root dir.

Change-Id: I5afe6c7176063892e3e632698c849bd9f4b92906
This commit is contained in:
Zhe Zhang 2016-02-23 13:29:39 -08:00
parent acffe82353
commit 9ecb71f92c
3 changed files with 17 additions and 1 deletions

View File

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

View File

@ -1014,6 +1014,8 @@ Release 2.8.0 - UNRELEASED
HDFS-9084. Pagination, sorting and filtering of files/directories in the HDFS-9084. Pagination, sorting and filtering of files/directories in the
HDFS Web UI. (Ravi Prakash via ozawa) HDFS Web UI. (Ravi Prakash via ozawa)
HDFS-9844. Correct path creation in getTrashRoot to handle root dir. (zhz)
OPTIMIZATIONS OPTIMIZATIONS
HDFS-8026. Trace FSOutputSummer#writeChecksumChunks rather than HDFS-8026. Trace FSOutputSummer#writeChecksumChunks rather than

View File

@ -1428,6 +1428,20 @@ public void testEncryptionZoneWithTrash() throws Exception {
verifyShellDeleteWithTrash(shell, topEZ); verifyShellDeleteWithTrash(shell, topEZ);
} }
@Test(timeout = 120000)
public void testRootDirEZTrash() throws Exception {
final HdfsAdmin dfsAdmin =
new HdfsAdmin(FileSystem.getDefaultUri(conf), conf);
dfsAdmin.createEncryptionZone(new Path("/"), TEST_KEY);
final Path encFile = new Path("/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);
}
private void verifyShellDeleteWithTrash(FsShell shell, Path path) private void verifyShellDeleteWithTrash(FsShell shell, Path path)
throws Exception{ throws Exception{
try { try {