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:
parent
adb673fdaf
commit
19a6762639
@ -485,6 +485,10 @@ protected DistributedFileSystem getDFS() throws IOException {
|
|||||||
return AdminHelper.checkAndGetDFS(getFS(), getConf());
|
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.
|
* Gives a report on how the FileSystem is doing.
|
||||||
* @exception IOException if the filesystem does not exist.
|
* @exception IOException if the filesystem does not exist.
|
||||||
@ -576,17 +580,16 @@ public void report(String[] argv, int i) throws IOException {
|
|||||||
List<String> args = Arrays.asList(argv);
|
List<String> args = Arrays.asList(argv);
|
||||||
// Truncate already handled arguments before parsing report()-specific ones
|
// Truncate already handled arguments before parsing report()-specific ones
|
||||||
args = new ArrayList<String>(args.subList(i, args.size()));
|
args = new ArrayList<String>(args.subList(i, args.size()));
|
||||||
final boolean listLive = StringUtils.popOption("-live", args);
|
final boolean listLive = StringUtils.popOption(DFS_REPORT_ARGS[0], args);
|
||||||
final boolean listDead = StringUtils.popOption("-dead", args);
|
final boolean listDead = StringUtils.popOption(DFS_REPORT_ARGS[1], args);
|
||||||
final boolean listDecommissioning =
|
final boolean listDecommissioning =
|
||||||
StringUtils.popOption("-decommissioning", args);
|
StringUtils.popOption(DFS_REPORT_ARGS[2], args);
|
||||||
final boolean listEnteringMaintenance =
|
final boolean listEnteringMaintenance =
|
||||||
StringUtils.popOption("-enteringmaintenance", args);
|
StringUtils.popOption(DFS_REPORT_ARGS[3], args);
|
||||||
final boolean listInMaintenance =
|
final boolean listInMaintenance =
|
||||||
StringUtils.popOption("-inmaintenance", args);
|
StringUtils.popOption(DFS_REPORT_ARGS[4], args);
|
||||||
final boolean listSlowNodes =
|
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
|
// If no filter flags are found, then list all DN types
|
||||||
boolean listAll = (!listLive && !listDead && !listDecommissioning
|
boolean listAll = (!listLive && !listDead && !listDecommissioning
|
||||||
@ -2338,7 +2341,7 @@ public int run(String[] argv) {
|
|||||||
return exitCode;
|
return exitCode;
|
||||||
}
|
}
|
||||||
} else if ("-report".equals(cmd)) {
|
} else if ("-report".equals(cmd)) {
|
||||||
if (argv.length > 6) {
|
if (argv.length > DFS_REPORT_ARGS.length + 1) {
|
||||||
printUsage(cmd);
|
printUsage(cmd);
|
||||||
return exitCode;
|
return exitCode;
|
||||||
}
|
}
|
||||||
|
@ -786,6 +786,14 @@ public void testReportCommand() throws Exception {
|
|||||||
resetStream();
|
resetStream();
|
||||||
assertEquals(0, ToolRunner.run(dfsAdmin, new String[] {"-report"}));
|
assertEquals(0, ToolRunner.run(dfsAdmin, new String[] {"-report"}));
|
||||||
verifyNodesAndCorruptBlocks(numDn, numDn - 1, 1, 1, client, 0L, 0L);
|
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));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user