diff --git a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/conf/Configuration.java b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/conf/Configuration.java index 44bb72318e3..40f541dfcca 100644 --- a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/conf/Configuration.java +++ b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/conf/Configuration.java @@ -303,7 +303,7 @@ public synchronized static void addDeprecation(String key, String[] newKeys) { * @return true if the key is deprecated and * false otherwise. */ - private static boolean isDeprecated(String key) { + public static boolean isDeprecated(String key) { return deprecatedKeyMap.containsKey(key); } diff --git a/hadoop-mapreduce-project/CHANGES.txt b/hadoop-mapreduce-project/CHANGES.txt index 910775f484a..f8a19aeaf2d 100644 --- a/hadoop-mapreduce-project/CHANGES.txt +++ b/hadoop-mapreduce-project/CHANGES.txt @@ -72,6 +72,8 @@ Release 0.23.3 - UNRELEASED MAPREDUCE-3431 NPE in Resource Manager shutdown. (stevel) + MAPREDUCE-4010. TestWritableJobConf fails on trunk (tucu via bobby) + Release 0.23.2 - UNRELEASED INCOMPATIBLE CHANGES diff --git a/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-jobclient/src/test/java/org/apache/hadoop/mapred/TestWritableJobConf.java b/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-jobclient/src/test/java/org/apache/hadoop/mapred/TestWritableJobConf.java index c3996b2f4a1..2c0cedcbb30 100644 --- a/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-jobclient/src/test/java/org/apache/hadoop/mapred/TestWritableJobConf.java +++ b/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-jobclient/src/test/java/org/apache/hadoop/mapred/TestWritableJobConf.java @@ -57,20 +57,25 @@ private K serDeser(K conf) throws Exception { } private void assertEquals(Configuration conf1, Configuration conf2) { - assertEquals(conf1.size(), conf2.size()); - + // We ignore deprecated keys because after deserializing, both the + // deprecated and the non-deprecated versions of a config are set. + // This is consistent with both the set and the get methods. Iterator> iterator1 = conf1.iterator(); Map map1 = new HashMap(); while (iterator1.hasNext()) { Map.Entry entry = iterator1.next(); - map1.put(entry.getKey(), entry.getValue()); + if (!Configuration.isDeprecated(entry.getKey())) { + map1.put(entry.getKey(), entry.getValue()); + } } - Iterator> iterator2 = conf1.iterator(); + Iterator> iterator2 = conf2.iterator(); Map map2 = new HashMap(); while (iterator2.hasNext()) { Map.Entry entry = iterator2.next(); - map2.put(entry.getKey(), entry.getValue()); + if (!Configuration.isDeprecated(entry.getKey())) { + map2.put(entry.getKey(), entry.getValue()); + } } assertEquals(map1, map2);