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 @@ public class RouterClientProtocol implements ClientProtocol {
|
||||||
* @param date Map with the dates.
|
* @param date Map with the dates.
|
||||||
* @return New HDFS file status representing a mount point.
|
* @return New HDFS file status representing a mount point.
|
||||||
*/
|
*/
|
||||||
private HdfsFileStatus getMountPointStatus(
|
@VisibleForTesting
|
||||||
|
HdfsFileStatus getMountPointStatus(
|
||||||
String name, int childrenNum, long date) {
|
String name, int childrenNum, long date) {
|
||||||
long modTime = date;
|
long modTime = date;
|
||||||
long accessTime = date;
|
long accessTime = date;
|
||||||
|
@ -2028,6 +2029,8 @@ public class RouterClientProtocol implements ClientProtocol {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
long inodeId = 0;
|
long inodeId = 0;
|
||||||
|
Path path = new Path(name);
|
||||||
|
String nameStr = path.getName();
|
||||||
return new HdfsFileStatus.Builder()
|
return new HdfsFileStatus.Builder()
|
||||||
.isdir(true)
|
.isdir(true)
|
||||||
.mtime(modTime)
|
.mtime(modTime)
|
||||||
|
@ -2036,7 +2039,7 @@ public class RouterClientProtocol implements ClientProtocol {
|
||||||
.owner(owner)
|
.owner(owner)
|
||||||
.group(group)
|
.group(group)
|
||||||
.symlink(new byte[0])
|
.symlink(new byte[0])
|
||||||
.path(DFSUtil.string2Bytes(name))
|
.path(DFSUtil.string2Bytes(nameStr))
|
||||||
.fileId(inodeId)
|
.fileId(inodeId)
|
||||||
.children(childrenNum)
|
.children(childrenNum)
|
||||||
.flags(flags)
|
.flags(flags)
|
||||||
|
|
|
@ -290,6 +290,37 @@ public class TestRouterMountTable {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 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.
|
* GetListing of testPath through router.
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Reference in New Issue