HDFS-17017. Fix the issue of arguments number limit in report command in DFSAdmin (#5667). Contributed by Haiyang Hu.

Reviewed-by: Viraj Jasani <vjasani@apache.org>
Signed-off-by: Ayush Saxena <ayushsaxena@apache.org>
This commit is contained in:
huhaiyang 2023-05-21 11:33:34 +08:00 committed by Ayush Saxena
parent adb673fdaf
commit 19a6762639
No known key found for this signature in database
GPG Key ID: D09AE71061AB564D
2 changed files with 20 additions and 9 deletions

View File

@ -484,7 +484,11 @@ public class DFSAdmin extends FsShell {
protected DistributedFileSystem getDFS() throws IOException {
return AdminHelper.checkAndGetDFS(getFS(), getConf());
}
public static final String[] DFS_REPORT_ARGS =
new String[] {"-live", "-dead", "-decommissioning", "-enteringmaintenance",
"-inmaintenance", "-slownodes"};
/**
* Gives a report on how the FileSystem is doing.
* @exception IOException if the filesystem does not exist.
@ -576,17 +580,16 @@ public class DFSAdmin extends FsShell {
List<String> args = Arrays.asList(argv);
// Truncate already handled arguments before parsing report()-specific ones
args = new ArrayList<String>(args.subList(i, args.size()));
final boolean listLive = StringUtils.popOption("-live", args);
final boolean listDead = StringUtils.popOption("-dead", args);
final boolean listLive = StringUtils.popOption(DFS_REPORT_ARGS[0], args);
final boolean listDead = StringUtils.popOption(DFS_REPORT_ARGS[1], args);
final boolean listDecommissioning =
StringUtils.popOption("-decommissioning", args);
StringUtils.popOption(DFS_REPORT_ARGS[2], args);
final boolean listEnteringMaintenance =
StringUtils.popOption("-enteringmaintenance", args);
StringUtils.popOption(DFS_REPORT_ARGS[3], args);
final boolean listInMaintenance =
StringUtils.popOption("-inmaintenance", args);
StringUtils.popOption(DFS_REPORT_ARGS[4], args);
final boolean listSlowNodes =
StringUtils.popOption("-slownodes", args);
StringUtils.popOption(DFS_REPORT_ARGS[5], args);
// If no filter flags are found, then list all DN types
boolean listAll = (!listLive && !listDead && !listDecommissioning
@ -2338,7 +2341,7 @@ public class DFSAdmin extends FsShell {
return exitCode;
}
} else if ("-report".equals(cmd)) {
if (argv.length > 6) {
if (argv.length > DFS_REPORT_ARGS.length + 1) {
printUsage(cmd);
return exitCode;
}

View File

@ -786,6 +786,14 @@ public class TestDFSAdmin {
resetStream();
assertEquals(0, ToolRunner.run(dfsAdmin, new String[] {"-report"}));
verifyNodesAndCorruptBlocks(numDn, numDn - 1, 1, 1, client, 0L, 0L);
// verify report command for list all DN types
resetStream();
String[] reportWithArg = new String[DFSAdmin.DFS_REPORT_ARGS.length + 1];
reportWithArg[0] = "-report";
System.arraycopy(DFSAdmin.DFS_REPORT_ARGS, 0, reportWithArg, 1,
DFSAdmin.DFS_REPORT_ARGS.length);
assertEquals(0, ToolRunner.run(dfsAdmin, reportWithArg));
}
}