diff --git a/hadoop-common-project/hadoop-common/CHANGES.txt b/hadoop-common-project/hadoop-common/CHANGES.txt index 2806ee2d347..f1aab62ce24 100644 --- a/hadoop-common-project/hadoop-common/CHANGES.txt +++ b/hadoop-common-project/hadoop-common/CHANGES.txt @@ -765,6 +765,9 @@ Release 2.7.0 - UNRELEASED HADOOP-6221 RPC Client operations cannot be interrupted. (stevel) + HADOOP-11509. Change parsing sequence in GenericOptionsParser to parse -D + parameters before -files. (xgong) + Release 2.6.1 - UNRELEASED INCOMPATIBLE CHANGES diff --git a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/GenericOptionsParser.java b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/GenericOptionsParser.java index d0e765529c7..0a46a7a81ca 100644 --- a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/GenericOptionsParser.java +++ b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/GenericOptionsParser.java @@ -284,6 +284,17 @@ private void processGeneralOptions(Configuration conf, conf.addResource(new Path(value)); } } + + if (line.hasOption('D')) { + String[] property = line.getOptionValues('D'); + for(String prop : property) { + String[] keyval = prop.split("=", 2); + if (keyval.length == 2) { + conf.set(keyval[0], keyval[1], "from command line"); + } + } + } + if (line.hasOption("libjars")) { conf.set("tmpjars", validateFiles(line.getOptionValue("libjars"), conf), @@ -307,15 +318,6 @@ private void processGeneralOptions(Configuration conf, validateFiles(line.getOptionValue("archives"), conf), "from -archives command line option"); } - if (line.hasOption('D')) { - String[] property = line.getOptionValues('D'); - for(String prop : property) { - String[] keyval = prop.split("=", 2); - if (keyval.length == 2) { - conf.set(keyval[0], keyval[1], "from command line"); - } - } - } conf.setBoolean("mapreduce.client.genericoptionsparser.used", true); // tokensFile