You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by su...@apache.org on 2012/10/26 23:44:29 UTC

svn commit: r1402678 - in /hadoop/common/branches/branch-1: CHANGES.txt src/core/org/apache/hadoop/conf/Configuration.java src/core/org/apache/hadoop/http/HttpServer.java

Author: suresh
Date: Fri Oct 26 21:44:29 2012
New Revision: 1402678

URL: http://svn.apache.org/viewvc?rev=1402678&view=rev
Log:
HADOOP-8567. Reverting the commits r1402641 and r1402639 because of missed files.

Modified:
    hadoop/common/branches/branch-1/CHANGES.txt
    hadoop/common/branches/branch-1/src/core/org/apache/hadoop/conf/Configuration.java
    hadoop/common/branches/branch-1/src/core/org/apache/hadoop/http/HttpServer.java

Modified: hadoop/common/branches/branch-1/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-1/CHANGES.txt?rev=1402678&r1=1402677&r2=1402678&view=diff
==============================================================================
--- hadoop/common/branches/branch-1/CHANGES.txt (original)
+++ hadoop/common/branches/branch-1/CHANGES.txt Fri Oct 26 21:44:29 2012
@@ -29,9 +29,6 @@ Release 1.2.0 - unreleased
     HDFS-3912. Detect and avoid stale datanodes for writes.
     (Jing Zhao via suresh)
 
-    HADOOP-8567. Port conf servlet to dump running configuration  to 
-    branch 1.x. (todd, Backported by Jing Zhao via suresh)
-
   IMPROVEMENTS
 
     HDFS-3515. Port HDFS-1457 to branch-1. (eli)

Modified: hadoop/common/branches/branch-1/src/core/org/apache/hadoop/conf/Configuration.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-1/src/core/org/apache/hadoop/conf/Configuration.java?rev=1402678&r1=1402677&r2=1402678&view=diff
==============================================================================
--- hadoop/common/branches/branch-1/src/core/org/apache/hadoop/conf/Configuration.java (original)
+++ hadoop/common/branches/branch-1/src/core/org/apache/hadoop/conf/Configuration.java Fri Oct 26 21:44:29 2012
@@ -27,7 +27,6 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.io.OutputStream;
-import java.io.OutputStreamWriter;
 import java.io.Reader;
 import java.io.Writer;
 import java.net.URL;
@@ -52,7 +51,6 @@ import javax.xml.parsers.DocumentBuilder
 import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.parsers.ParserConfigurationException;
 import javax.xml.transform.Transformer;
-import javax.xml.transform.TransformerException;
 import javax.xml.transform.TransformerFactory;
 import javax.xml.transform.dom.DOMSource;
 import javax.xml.transform.stream.StreamResult;
@@ -67,7 +65,6 @@ import org.apache.hadoop.util.Reflection
 import org.apache.hadoop.util.StringUtils;
 import org.codehaus.jackson.JsonFactory;
 import org.codehaus.jackson.JsonGenerator;
-import org.w3c.dom.Comment;
 import org.w3c.dom.DOMException;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
@@ -174,10 +171,10 @@ public class Configuration implements It
     new CopyOnWriteArrayList<String>();
   
   /**
-   * The value reported as the setting resource when a key is set
-   * by code rather than a file resource.
+   * Flag to indicate if the storage of resource which updates a key needs 
+   * to be stored for each key
    */
-  static final String UNKNOWN_RESOURCE = "Unknown";
+  private boolean storeResource;
   
   /**
    * Stores the mapping of key to the resource which modifies or loads 
@@ -226,13 +223,30 @@ public class Configuration implements It
    */
   public Configuration(boolean loadDefaults) {
     this.loadDefaults = loadDefaults;
-    updatingResource = new HashMap<String, String>();
     if (LOG.isDebugEnabled()) {
       LOG.debug(StringUtils.stringifyException(new IOException("config()")));
     }
     synchronized(Configuration.class) {
       REGISTRY.put(this, null);
     }
+    this.storeResource = false;
+  }
+  
+  /**
+   * A new configuration with the same settings and additional facility for
+   * storage of resource to each key which loads or updates 
+   * the key most recently
+   * @param other the configuration from which to clone settings
+   * @param storeResource flag to indicate if the storage of resource to 
+   * each key is to be stored
+   */
+  private Configuration(Configuration other, boolean storeResource) {
+    this(other);
+    this.loadDefaults = other.loadDefaults;
+    this.storeResource = storeResource;
+    if (storeResource) {
+      updatingResource = new HashMap<String, String>();
+    }
   }
   
   /** 
@@ -246,23 +260,20 @@ public class Configuration implements It
       LOG.debug(StringUtils.stringifyException
                 (new IOException("config(config)")));
     }
-
-    this.resources = (ArrayList) other.resources.clone();
-    synchronized (other) {
-      if (other.properties != null) {
-        this.properties = (Properties) other.properties.clone();
-      }
-
-      if (other.overlay != null) {
-        this.overlay = (Properties) other.overlay.clone();
-      }
-
-      this.updatingResource = new HashMap<String, String>(
-          other.updatingResource);
-    }
-
+   
+   this.resources = (ArrayList)other.resources.clone();
+   synchronized(other) {
+     if (other.properties != null) {
+       this.properties = (Properties)other.properties.clone();
+     }
+
+     if (other.overlay!=null) {
+       this.overlay = (Properties)other.overlay.clone();
+     }
+   }
+   
     this.finalParameters = new HashSet<String>(other.finalParameters);
-    synchronized (Configuration.class) {
+    synchronized(Configuration.class) {
       REGISTRY.put(this, null);
     }
   }
@@ -426,7 +437,6 @@ public class Configuration implements It
   public void set(String name, String value) {
     getOverlay().setProperty(name, value);
     getProps().setProperty(name, value);
-    this.updatingResource.put(name, UNKNOWN_RESOURCE);
   }
  
   /**
@@ -1061,8 +1071,10 @@ public class Configuration implements It
       loadResources(properties, resources, quietmode);
       if (overlay!= null) {
         properties.putAll(overlay);
-        for (Map.Entry<Object,Object> item: overlay.entrySet()) {
-          updatingResource.put((String) item.getKey(), UNKNOWN_RESOURCE);
+        if (storeResource) {
+          for (Map.Entry<Object,Object> item: overlay.entrySet()) {
+            updatingResource.put((String) item.getKey(), "Unknown");
+          }
         }
       }
     }
@@ -1234,7 +1246,9 @@ public class Configuration implements It
           if (value != null) {
             if (!finalParameters.contains(attr)) {
               properties.setProperty(attr, value);
-              updatingResource.put(attr, name.toString());
+              if (storeResource) {
+                updatingResource.put(attr, name.toString());
+              }
             } else if (!value.equals(properties.getProperty(attr))) {
               LOG.warn(name+":a attempt to override final parameter: "+attr
                      +";  Ignoring.");
@@ -1262,22 +1276,12 @@ public class Configuration implements It
   }
 
   /** 
-   * Write out the non-default properties in this configuration to the given
+   * Write out the non-default properties in this configuration to the give
    * {@link OutputStream}.
    * 
    * @param out the output stream to write to.
    */
   public void writeXml(OutputStream out) throws IOException {
-    writeXml(new OutputStreamWriter(out));
-  }
-  
-  /**
-   * Write out the non-default properties in this configuration to the given
-   * {@link Writer}.
-   * 
-   * @param out the writer to write to.
-   */
-  public synchronized void writeXml(Writer out) throws IOException {
     Properties properties = getProps();
     try {
       Document doc =
@@ -1296,11 +1300,7 @@ public class Configuration implements It
         }
         Element propNode = doc.createElement("property");
         conf.appendChild(propNode);
-        if (updatingResource != null) {
-          Comment commentNode = doc.createComment("Loaded from "
-              + updatingResource.get(name));
-          propNode.appendChild(commentNode);
-        }
+      
         Element nameNode = doc.createElement("name");
         nameNode.appendChild(doc.createTextNode(name));
         propNode.appendChild(nameNode);
@@ -1317,10 +1317,8 @@ public class Configuration implements It
       TransformerFactory transFactory = TransformerFactory.newInstance();
       Transformer transformer = transFactory.newTransformer();
       transformer.transform(source, result);
-    } catch (TransformerException te) {
-      throw new IOException(te);
-    } catch (ParserConfigurationException pe) {
-      throw new IOException(pe);
+    } catch (Exception e) {
+      throw new RuntimeException(e);
     }
   }
 
@@ -1335,26 +1333,26 @@ public class Configuration implements It
    * @param out the Writer to write to
    * @throws IOException
    */
-  public static void dumpConfiguration(Configuration config, 
+  public static void dumpConfiguration(Configuration conf, 
       Writer out) throws IOException {
+    Configuration config = new Configuration(conf,true);
+    config.reloadConfiguration();
     JsonFactory dumpFactory = new JsonFactory();
     JsonGenerator dumpGenerator = dumpFactory.createJsonGenerator(out);
     dumpGenerator.writeStartObject();
     dumpGenerator.writeFieldName("properties");
     dumpGenerator.writeStartArray();
     dumpGenerator.flush();
-    synchronized (config) {
-      for (Map.Entry<Object,Object> item: config.getProps().entrySet()) {
-        dumpGenerator.writeStartObject();
-        dumpGenerator.writeStringField("key", (String) item.getKey());
-        dumpGenerator.writeStringField("value", 
-            config.get((String) item.getKey()));
-        dumpGenerator.writeBooleanField("isFinal",
-            config.finalParameters.contains(item.getKey()));
-        dumpGenerator.writeStringField("resource",
-            config.updatingResource.get(item.getKey()));
-        dumpGenerator.writeEndObject();
-      }
+    for (Map.Entry<Object,Object> item: config.getProps().entrySet()) {
+      dumpGenerator.writeStartObject();
+      dumpGenerator.writeStringField("key", (String) item.getKey());
+      dumpGenerator.writeStringField("value", 
+          config.get((String) item.getKey()));
+      dumpGenerator.writeBooleanField("isFinal",
+          config.finalParameters.contains(item.getKey()));
+      dumpGenerator.writeStringField("resource",
+          config.updatingResource.get(item.getKey()));
+      dumpGenerator.writeEndObject();
     }
     dumpGenerator.writeEndArray();
     dumpGenerator.writeEndObject();

Modified: hadoop/common/branches/branch-1/src/core/org/apache/hadoop/http/HttpServer.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-1/src/core/org/apache/hadoop/http/HttpServer.java?rev=1402678&r1=1402677&r2=1402678&view=diff
==============================================================================
--- hadoop/common/branches/branch-1/src/core/org/apache/hadoop/http/HttpServer.java (original)
+++ hadoop/common/branches/branch-1/src/core/org/apache/hadoop/http/HttpServer.java Fri Oct 26 21:44:29 2012
@@ -85,10 +85,10 @@ public class HttpServer implements Filte
 
   static final String FILTER_INITIALIZER_PROPERTY
       = "hadoop.http.filter.initializers";
- 
+
   // The ServletContext attribute where the daemon Configuration
   // gets stored.
-  public static final String CONF_CONTEXT_ATTRIBUTE = "hadoop.conf";
+  static final String CONF_CONTEXT_ATTRIBUTE = "hadoop.conf";
   static final String ADMINS_ACL = "admins.acl";
   public static final String SPNEGO_FILTER = "SpnegoFilter";
   public static final String KRB5_FILTER = "krb5Filter";