HDFS-4801. lsSnapshottableDir throws IllegalArgumentException when root is snapshottable. Contributed by Jing Zhao
git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/branches/HDFS-2802@1479709 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
0aab1ef996
commit
98b416f5ac
@ -341,3 +341,6 @@ Branch-2802 Snapshot (Unreleased)
|
|||||||
|
|
||||||
HDFS-4800. Fix INodeDirectoryWithSnapshot#cleanDeletedINode. (Jing Zhao via
|
HDFS-4800. Fix INodeDirectoryWithSnapshot#cleanDeletedINode. (Jing Zhao via
|
||||||
szetszwo)
|
szetszwo)
|
||||||
|
|
||||||
|
HDFS-4801. lsSnapshottableDir throws IllegalArgumentException when root is
|
||||||
|
snapshottable. (Jing Zhao via szetszwo)
|
||||||
|
@ -98,10 +98,17 @@ public HdfsFileStatus getDirStatus() {
|
|||||||
* @return Full path of the file
|
* @return Full path of the file
|
||||||
*/
|
*/
|
||||||
public Path getFullPath() {
|
public Path getFullPath() {
|
||||||
String parentFullPathStr = (parentFullPath == null || parentFullPath.length == 0) ? null
|
String parentFullPathStr =
|
||||||
: DFSUtil.bytes2String(parentFullPath);
|
(parentFullPath == null || parentFullPath.length == 0) ?
|
||||||
return parentFullPathStr == null ? new Path(dirStatus.getLocalName())
|
null : DFSUtil.bytes2String(parentFullPath);
|
||||||
: new Path(parentFullPathStr, dirStatus.getLocalName());
|
if (parentFullPathStr == null
|
||||||
|
&& dirStatus.getLocalNameInBytes().length == 0) {
|
||||||
|
// root
|
||||||
|
return new Path("/");
|
||||||
|
} else {
|
||||||
|
return parentFullPathStr == null ? new Path(dirStatus.getLocalName())
|
||||||
|
: new Path(parentFullPathStr, dirStatus.getLocalName());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -81,6 +81,19 @@ public void testListSnapshottableDir() throws Exception {
|
|||||||
SnapshottableDirectoryStatus[] dirs = hdfs.getSnapshottableDirListing();
|
SnapshottableDirectoryStatus[] dirs = hdfs.getSnapshottableDirListing();
|
||||||
assertNull(dirs);
|
assertNull(dirs);
|
||||||
|
|
||||||
|
// Make root as snapshottable
|
||||||
|
final Path root = new Path("/");
|
||||||
|
hdfs.allowSnapshot(root);
|
||||||
|
dirs = hdfs.getSnapshottableDirListing();
|
||||||
|
assertEquals(1, dirs.length);
|
||||||
|
assertEquals("", dirs[0].getDirStatus().getLocalName());
|
||||||
|
assertEquals(root, dirs[0].getFullPath());
|
||||||
|
|
||||||
|
// Make root non-snaphsottable
|
||||||
|
hdfs.disallowSnapshot(root);
|
||||||
|
dirs = hdfs.getSnapshottableDirListing();
|
||||||
|
assertNull(dirs);
|
||||||
|
|
||||||
// Make dir1 as snapshottable
|
// Make dir1 as snapshottable
|
||||||
hdfs.allowSnapshot(dir1);
|
hdfs.allowSnapshot(dir1);
|
||||||
dirs = hdfs.getSnapshottableDirListing();
|
dirs = hdfs.getSnapshottableDirListing();
|
||||||
|
Loading…
Reference in New Issue
Block a user