HDFS-15090. RBF: MountPoint Listing Should Return Flag Values Of Destination. Contributed by Ayush Saxena.
This commit is contained in:
parent
b343e1533b
commit
4a76ab777f
@ -1921,6 +1921,8 @@ private HdfsFileStatus getMountPointStatus(
|
|||||||
FsPermission permission = FsPermission.getDirDefault();
|
FsPermission permission = FsPermission.getDirDefault();
|
||||||
String owner = this.superUser;
|
String owner = this.superUser;
|
||||||
String group = this.superGroup;
|
String group = this.superGroup;
|
||||||
|
EnumSet<HdfsFileStatus.Flags> flags =
|
||||||
|
EnumSet.noneOf(HdfsFileStatus.Flags.class);
|
||||||
if (subclusterResolver instanceof MountTableResolver) {
|
if (subclusterResolver instanceof MountTableResolver) {
|
||||||
try {
|
try {
|
||||||
String mName = name.startsWith("/") ? name : "/" + name;
|
String mName = name.startsWith("/") ? name : "/" + name;
|
||||||
@ -1940,6 +1942,9 @@ private HdfsFileStatus getMountPointStatus(
|
|||||||
owner = fInfo.getOwner();
|
owner = fInfo.getOwner();
|
||||||
group = fInfo.getGroup();
|
group = fInfo.getGroup();
|
||||||
childrenNum = fInfo.getChildrenNum();
|
childrenNum = fInfo.getChildrenNum();
|
||||||
|
flags = DFSUtil
|
||||||
|
.getFlags(fInfo.isEncrypted(), fInfo.isErasureCoded(),
|
||||||
|
fInfo.isSnapshotEnabled(), fInfo.hasAcl());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
@ -1971,6 +1976,7 @@ private HdfsFileStatus getMountPointStatus(
|
|||||||
.path(DFSUtil.string2Bytes(name))
|
.path(DFSUtil.string2Bytes(name))
|
||||||
.fileId(inodeId)
|
.fileId(inodeId)
|
||||||
.children(childrenNum)
|
.children(childrenNum)
|
||||||
|
.flags(flags)
|
||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -37,6 +37,7 @@
|
|||||||
import org.apache.hadoop.fs.FileSystem;
|
import org.apache.hadoop.fs.FileSystem;
|
||||||
import org.apache.hadoop.fs.Path;
|
import org.apache.hadoop.fs.Path;
|
||||||
import org.apache.hadoop.fs.permission.FsPermission;
|
import org.apache.hadoop.fs.permission.FsPermission;
|
||||||
|
import org.apache.hadoop.hdfs.DistributedFileSystem;
|
||||||
import org.apache.hadoop.hdfs.protocol.ClientProtocol;
|
import org.apache.hadoop.hdfs.protocol.ClientProtocol;
|
||||||
import org.apache.hadoop.hdfs.protocol.DirectoryListing;
|
import org.apache.hadoop.hdfs.protocol.DirectoryListing;
|
||||||
import org.apache.hadoop.hdfs.protocol.HdfsFileStatus;
|
import org.apache.hadoop.hdfs.protocol.HdfsFileStatus;
|
||||||
@ -663,4 +664,20 @@ public void testRenameMountPoint() throws Exception {
|
|||||||
nnFs0.delete(new Path("/testrename2"), true);
|
nnFs0.delete(new Path("/testrename2"), true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
@Test
|
||||||
|
public void testListStatusMountPoint() throws Exception {
|
||||||
|
try {
|
||||||
|
MountTable addEntry = MountTable.newInstance("/mount/testLsMountEntry",
|
||||||
|
Collections.singletonMap("ns0", "/testLsMountEntryDest"));
|
||||||
|
assertTrue(addMountTable(addEntry));
|
||||||
|
nnFs0.mkdirs(new Path("/testLsMountEntryDest"));
|
||||||
|
DistributedFileSystem routerDfs = (DistributedFileSystem) routerFs;
|
||||||
|
Path mountPath = new Path("/mount/testLsMountEntry");
|
||||||
|
routerDfs.setErasureCodingPolicy(mountPath, "RS-6-3-1024k");
|
||||||
|
assertTrue(routerDfs.listStatus(new Path("/mount"))[0].isErasureCoded());
|
||||||
|
} finally {
|
||||||
|
nnFs0.delete(new Path("/testLsMountEntryDest"), true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user