Author: yhemanth
Date: Tue Sep  1 15:24:56 2009
New Revision: 810097

URL: http://svn.apache.org/viewvc?rev=810097&view=rev
Log:
HADOOP-6227. Fix Configuration to allow final parameters to be set to null and 
prevent them from being overridden. Contributed by Amareshwari Sriramadasu.

Modified:
    hadoop/common/trunk/CHANGES.txt
    hadoop/common/trunk/src/java/org/apache/hadoop/conf/Configuration.java
    
hadoop/common/trunk/src/test/core/org/apache/hadoop/conf/TestConfiguration.java

Modified: hadoop/common/trunk/CHANGES.txt
URL: 
http://svn.apache.org/viewvc/hadoop/common/trunk/CHANGES.txt?rev=810097&r1=810096&r2=810097&view=diff
==============================================================================
--- hadoop/common/trunk/CHANGES.txt (original)
+++ hadoop/common/trunk/CHANGES.txt Tue Sep  1 15:24:56 2009
@@ -951,6 +951,10 @@
     HADOOP-6215. fix GenericOptionParser to deal with -D with '=' in the 
     value. (Amar Kamat via sharad)
 
+    HADOOP-6227. Fix Configuration to allow final parameters to be set to null
+    and prevent them from being overridden.
+    (Amareshwari Sriramadasu via yhemanth)
+
 Release 0.20.1 - Unreleased
 
   INCOMPATIBLE CHANGES

Modified: hadoop/common/trunk/src/java/org/apache/hadoop/conf/Configuration.java
URL: 
http://svn.apache.org/viewvc/hadoop/common/trunk/src/java/org/apache/hadoop/conf/Configuration.java?rev=810097&r1=810096&r2=810097&view=diff
==============================================================================
--- hadoop/common/trunk/src/java/org/apache/hadoop/conf/Configuration.java 
(original)
+++ hadoop/common/trunk/src/java/org/apache/hadoop/conf/Configuration.java Tue 
Sep  1 15:24:56 2009
@@ -1286,17 +1286,20 @@
         }
         
         // Ignore this parameter if it has already been marked as 'final'
-        if (attr != null && value != null) {
-          if (!finalParameters.contains(attr)) {
-            properties.setProperty(attr, value);
-            if (storeResource) {
-              updatingResource.put(attr, name.toString());
-            }
-            if (finalParameter)
-              finalParameters.add(attr);
-          } else {
-            LOG.warn(name+":a attempt to override final parameter: "+attr
+        if (attr != null) {
+          if (value != null) {
+            if (!finalParameters.contains(attr)) {
+              properties.setProperty(attr, value);
+              if (storeResource) {
+                updatingResource.put(attr, name.toString());
+              }
+            } else {
+              LOG.warn(name+":a attempt to override final parameter: "+attr
                      +";  Ignoring.");
+            }
+          }
+          if (finalParameter) {
+            finalParameters.add(attr);
           }
         }
       }

Modified: 
hadoop/common/trunk/src/test/core/org/apache/hadoop/conf/TestConfiguration.java
URL: 
http://svn.apache.org/viewvc/hadoop/common/trunk/src/test/core/org/apache/hadoop/conf/TestConfiguration.java?rev=810097&r1=810096&r2=810097&view=diff
==============================================================================
--- 
hadoop/common/trunk/src/test/core/org/apache/hadoop/conf/TestConfiguration.java 
(original)
+++ 
hadoop/common/trunk/src/test/core/org/apache/hadoop/conf/TestConfiguration.java 
Tue Sep  1 15:24:56 2009
@@ -100,7 +100,28 @@
     assertTrue(conf.getInt("intvar", -1) == 42);
     assertTrue(conf.getInt("my.int", -1) == 42);
   }
-    
+
+  public void testFinalParam() throws IOException {
+    out=new BufferedWriter(new FileWriter(CONFIG));
+    startConfig();
+    declareProperty("my.var", "", "", true);
+    endConfig();
+    Path fileResource = new Path(CONFIG);
+    Configuration conf1 = new Configuration();
+    conf1.addResource(fileResource);
+    assertNull("my var is not null", conf1.get("my.var"));
+       
+    out=new BufferedWriter(new FileWriter(CONFIG2));
+    startConfig();
+    declareProperty("my.var", "myval", "myval", false);
+    endConfig();
+    fileResource = new Path(CONFIG2);
+
+    Configuration conf2 = new Configuration(conf1);
+    conf2.addResource(fileResource);
+    assertNull("my var is not final", conf2.get("my.var"));
+  }
+
   public static void assertEq(Object a, Object b) {
     System.out.println("assertEq: " + a + ", " + b);
     assertEquals(a, b);


Reply via email to