HDFS-15591. RBF: Fix webHdfs file display error. Contributed by wangzhaohui.
(cherry picked from commit fc8a6dd8a9
)
This commit is contained in:
parent
f5cc1540b4
commit
2da3356428
@ -1977,7 +1977,8 @@ private static FsPermission getParentPermission(final FsPermission mask) {
|
||||
* @param date Map with the dates.
|
||||
* @return New HDFS file status representing a mount point.
|
||||
*/
|
||||
private HdfsFileStatus getMountPointStatus(
|
||||
@VisibleForTesting
|
||||
HdfsFileStatus getMountPointStatus(
|
||||
String name, int childrenNum, long date) {
|
||||
long modTime = date;
|
||||
long accessTime = date;
|
||||
@ -2028,6 +2029,8 @@ private HdfsFileStatus getMountPointStatus(
|
||||
}
|
||||
}
|
||||
long inodeId = 0;
|
||||
Path path = new Path(name);
|
||||
String nameStr = path.getName();
|
||||
return new HdfsFileStatus.Builder()
|
||||
.isdir(true)
|
||||
.mtime(modTime)
|
||||
@ -2036,7 +2039,7 @@ private HdfsFileStatus getMountPointStatus(
|
||||
.owner(owner)
|
||||
.group(group)
|
||||
.symlink(new byte[0])
|
||||
.path(DFSUtil.string2Bytes(name))
|
||||
.path(DFSUtil.string2Bytes(nameStr))
|
||||
.fileId(inodeId)
|
||||
.children(childrenNum)
|
||||
.flags(flags)
|
||||
|
@ -290,6 +290,37 @@ public void testGetMountPointStatusWithIOException()
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Verify the getMountPointStatus result of passing in different parameters.
|
||||
*/
|
||||
@Test
|
||||
public void testGetMountPointStatus() throws IOException {
|
||||
MountTable addEntry = MountTable.newInstance("/testA/testB/testC/testD",
|
||||
Collections.singletonMap("ns0", "/testA/testB/testC/testD"));
|
||||
assertTrue(addMountTable(addEntry));
|
||||
RouterClientProtocol clientProtocol = new RouterClientProtocol(
|
||||
nnFs0.getConf(), routerContext.getRouter().getRpcServer());
|
||||
String src = "/";
|
||||
String child = "testA";
|
||||
Path childPath = new Path(src, child);
|
||||
HdfsFileStatus dirStatus =
|
||||
clientProtocol.getMountPointStatus(childPath.toString(), 0, 0);
|
||||
assertEquals(child, dirStatus.getLocalName());
|
||||
|
||||
String src1 = "/testA";
|
||||
String child1 = "testB";
|
||||
Path childPath1 = new Path(src1, child1);
|
||||
HdfsFileStatus dirStatus1 =
|
||||
clientProtocol.getMountPointStatus(childPath1.toString(), 0, 0);
|
||||
assertEquals(child1, dirStatus1.getLocalName());
|
||||
|
||||
String src2 = "/testA/testB";
|
||||
String child2 = "testC";
|
||||
Path childPath2 = new Path(src2, child2);
|
||||
HdfsFileStatus dirStatus2 =
|
||||
clientProtocol.getMountPointStatus(childPath2.toString(), 0, 0);
|
||||
assertEquals(child2, dirStatus2.getLocalName());
|
||||
}
|
||||
/**
|
||||
* GetListing of testPath through router.
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user