HDFS-15389. DFSAdmin should close filesystem and dfsadmin -setBalancerBandwidth should work with ViewFSOverloadScheme. Contributed by Ayush Saxena

(cherry picked from commit cc671b16f7)
This commit is contained in:
Ayush Saxena 2020-06-06 10:49:38 +05:30 committed by Uma Maheswara Rao G
parent 418580446b
commit bee2846bee
2 changed files with 23 additions and 10 deletions

View File

@ -479,9 +479,9 @@ public class DFSAdmin extends FsShell {
public DFSAdmin(Configuration conf) {
super(conf);
}
protected DistributedFileSystem getDFS() throws IOException {
return AdminHelper.getDFS(getConf());
return AdminHelper.checkAndGetDFS(getFS(), getConf());
}
/**
@ -1036,14 +1036,7 @@ public class DFSAdmin extends FsShell {
System.err.println("Bandwidth should be a non-negative integer");
return exitCode;
}
FileSystem fs = getFS();
if (!(fs instanceof DistributedFileSystem)) {
System.err.println("FileSystem is " + fs.getUri());
return exitCode;
}
DistributedFileSystem dfs = (DistributedFileSystem) fs;
DistributedFileSystem dfs = getDFS();
try{
dfs.setBalancerBandwidth(bandwidth);
System.out.println("Balancer bandwidth is set to " + bandwidth);

View File

@ -263,4 +263,24 @@ public class TestViewFileSystemOverloadSchemeWithDFSAdmin {
assertOutMsg("Disallowing snapshot on / succeeded", 1);
assertEquals(0, ret);
}
/**
* Tests setBalancerBandwidth with ViewFSOverloadScheme.
*/
@Test
public void testSetBalancerBandwidth() throws Exception {
final Path hdfsTargetPath = new Path(defaultFSURI + HDFS_USER_FOLDER);
addMountLinks(defaultFSURI.getAuthority(),
new String[] {HDFS_USER_FOLDER, LOCAL_FOLDER },
new String[] {hdfsTargetPath.toUri().toString(),
localTargetDir.toURI().toString() },
conf);
final DFSAdmin dfsAdmin = new DFSAdmin(conf);
redirectStream();
int ret = ToolRunner.run(dfsAdmin,
new String[] {"-fs", defaultFSURI.toString(), "-setBalancerBandwidth",
"1000"});
assertOutMsg("Balancer bandwidth is set to 1000", 0);
assertEquals(0, ret);
}
}