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);