YARN-10312. Add support for yarn logs -logFile to retain backward compatibility.

Contributed by Jim Brennan

(cherry picked from commit 7363931942)
This commit is contained in:
Eric Badger 2020-06-12 19:09:37 +00:00
parent 59b20a1ebf
commit b669735124
2 changed files with 51 additions and 0 deletions

View File

@ -102,6 +102,7 @@ public class LogsCLI extends Configured implements Tool {
private static final String APP_OWNER_OPTION = "appOwner"; private static final String APP_OWNER_OPTION = "appOwner";
private static final String AM_CONTAINER_OPTION = "am"; private static final String AM_CONTAINER_OPTION = "am";
private static final String PER_CONTAINER_LOG_FILES_OPTION = "log_files"; private static final String PER_CONTAINER_LOG_FILES_OPTION = "log_files";
private static final String PER_CONTAINER_LOG_FILES_OLD_OPTION = "logFiles";
private static final String PER_CONTAINER_LOG_FILES_REGEX_OPTION private static final String PER_CONTAINER_LOG_FILES_REGEX_OPTION
= "log_files_pattern"; = "log_files_pattern";
private static final String LIST_NODES_OPTION = "list_nodes"; private static final String LIST_NODES_OPTION = "list_nodes";
@ -218,6 +219,13 @@ public class LogsCLI extends Configured implements Tool {
} }
if (commandLine.hasOption(PER_CONTAINER_LOG_FILES_OPTION)) { if (commandLine.hasOption(PER_CONTAINER_LOG_FILES_OPTION)) {
logFiles = commandLine.getOptionValues(PER_CONTAINER_LOG_FILES_OPTION); logFiles = commandLine.getOptionValues(PER_CONTAINER_LOG_FILES_OPTION);
} else {
// For backward compatibility, we need to check for the old form of this
// command line option as well. New form takes precedent.
if (commandLine.hasOption(PER_CONTAINER_LOG_FILES_OLD_OPTION)) {
logFiles = commandLine.getOptionValues(
PER_CONTAINER_LOG_FILES_OLD_OPTION);
}
} }
if (commandLine.hasOption(PER_CONTAINER_LOG_FILES_REGEX_OPTION)) { if (commandLine.hasOption(PER_CONTAINER_LOG_FILES_REGEX_OPTION)) {
logFilesRegex = commandLine.getOptionValues( logFilesRegex = commandLine.getOptionValues(
@ -872,6 +880,12 @@ public class LogsCLI extends Configured implements Tool {
logFileOpt.setArgs(Option.UNLIMITED_VALUES); logFileOpt.setArgs(Option.UNLIMITED_VALUES);
logFileOpt.setArgName("Log File Name"); logFileOpt.setArgName("Log File Name");
opts.addOption(logFileOpt); opts.addOption(logFileOpt);
Option oldLogFileOpt = new Option(PER_CONTAINER_LOG_FILES_OLD_OPTION, true,
"Deprecated name for log_files, please use log_files option instead");
oldLogFileOpt.setValueSeparator(',');
oldLogFileOpt.setArgs(Option.UNLIMITED_VALUES);
oldLogFileOpt.setArgName("Log File Name");
opts.addOption(oldLogFileOpt);
Option logFileRegexOpt = new Option(PER_CONTAINER_LOG_FILES_REGEX_OPTION, Option logFileRegexOpt = new Option(PER_CONTAINER_LOG_FILES_REGEX_OPTION,
true, "Specify comma-separated value " true, "Specify comma-separated value "
+ "to get matched log files by using java regex. Use \".*\" to " + "to get matched log files by using java regex. Use \".*\" to "

View File

@ -466,6 +466,43 @@ public class TestLogsCLI {
logMessage(containerId3, "stdout1234"))); logMessage(containerId3, "stdout1234")));
sysOutStream.reset(); sysOutStream.reset();
// Check backward compatibility for -logFiles
exitCode = cli.run(new String[] {"-applicationId", appId.toString(),
"-logFiles", "stdout"});
assertTrue("Failed with -logFiles", exitCode == 0);
assertFalse("Failed with -logFiles", sysOutStream.toString().contains(
logMessage(containerId1, "syslog")));
assertFalse("Failed with -logFiles", sysOutStream.toString().contains(
logMessage(containerId2, "syslog")));
assertFalse("Failed with -logFiles", sysOutStream.toString().contains(
logMessage(containerId3, "syslog")));
assertTrue("Failed with -logFiles", sysOutStream.toString().contains(
logMessage(containerId3, "stdout")));
assertFalse("Failed with -logFiles", sysOutStream.toString().contains(
logMessage(containerId3, "stdout1234")));
sysOutStream.reset();
// Check -log_files supercedes -logFiles
exitCode = cli.run(new String[] {"-applicationId", appId.toString(),
"-log_files", "stdout", "-logFiles", "syslog"});
assertTrue("Failed with -logFiles and -log_files", exitCode == 0);
assertFalse("Failed with -logFiles and -log_files",
sysOutStream.toString().contains(
logMessage(containerId1, "syslog")));
assertFalse("Failed with -logFiles and -log_files",
sysOutStream.toString().contains(
logMessage(containerId2, "syslog")));
assertFalse("Failed with -logFiles and -log_files",
sysOutStream.toString().contains(
logMessage(containerId3, "syslog")));
assertTrue("Failed with -logFiles and -log_files",
sysOutStream.toString().contains(
logMessage(containerId3, "stdout")));
assertFalse("Failed with -logFiles and -log_files",
sysOutStream.toString().contains(
logMessage(containerId3, "stdout1234")));
sysOutStream.reset();
exitCode = cli.run(new String[] {"-applicationId", appId.toString(), exitCode = cli.run(new String[] {"-applicationId", appId.toString(),
"-log_files_pattern", "std*"}); "-log_files_pattern", "std*"});
assertTrue(exitCode == 0); assertTrue(exitCode == 0);