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 ji...@apache.org on 2014/11/07 03:30:18 UTC

hadoop git commit: Revert "HADOOP-11274. ConcurrentModificationException in Configuration Copy Constructor. Contributed by Junping Du."

Repository: hadoop
Updated Branches:
  refs/heads/trunk ae71a671a -> ba0a42cf6


Revert "HADOOP-11274. ConcurrentModificationException in Configuration Copy Constructor. Contributed by Junping Du."

This reverts commit 16b34824673f5a50d464727b8fad98470e5e984a.


Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/ba0a42cf
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/ba0a42cf
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/ba0a42cf

Branch: refs/heads/trunk
Commit: ba0a42cf678f1bb53c2ad22e766b3b1a07b3800b
Parents: ae71a67
Author: Jing Zhao <ji...@apache.org>
Authored: Thu Nov 6 18:27:59 2014 -0800
Committer: Jing Zhao <ji...@apache.org>
Committed: Thu Nov 6 18:27:59 2014 -0800

----------------------------------------------------------------------
 hadoop-common-project/hadoop-common/CHANGES.txt |  3 -
 .../org/apache/hadoop/conf/Configuration.java   | 85 +++++++++-----------
 2 files changed, 40 insertions(+), 48 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hadoop/blob/ba0a42cf/hadoop-common-project/hadoop-common/CHANGES.txt
----------------------------------------------------------------------
diff --git a/hadoop-common-project/hadoop-common/CHANGES.txt b/hadoop-common-project/hadoop-common/CHANGES.txt
index 679b5bb..8587f12 100644
--- a/hadoop-common-project/hadoop-common/CHANGES.txt
+++ b/hadoop-common-project/hadoop-common/CHANGES.txt
@@ -910,9 +910,6 @@ Release 2.6.0 - UNRELEASED
     HADOOP-11253. Hadoop streaming test TestStreamXmlMultipleRecords fails on
     Windows. (Varun Vasudev via wheat9)
 
-    HADOOP-11274. ConcurrentModificationException in Configuration Copy Constructor.
-    (Junping Du via jing9)
-
     BREAKDOWN OF HDFS-6134 AND HADOOP-10150 SUBTASKS AND RELATED JIRAS
   
       HADOOP-10734. Implement high-performance secure random number sources.

http://git-wip-us.apache.org/repos/asf/hadoop/blob/ba0a42cf/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/conf/Configuration.java
----------------------------------------------------------------------
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 16d5499..a3fae19 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
@@ -690,26 +690,26 @@ public class Configuration implements Iterable<Map.Entry<String,String>>,
    */
   @SuppressWarnings("unchecked")
   public Configuration(Configuration other) {
-    synchronized(other) {
-      this.resources = (ArrayList<Resource>) other.resources.clone();
-      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.finalParameters = new HashSet<String>(other.finalParameters);
-
-      this.classLoader = other.classLoader;
-      this.loadDefaults = other.loadDefaults;
-      setQuietMode(other.getQuietMode());
-    }
+   this.resources = (ArrayList<Resource>) 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.finalParameters = new HashSet<String>(other.finalParameters);
+   }
+   
     synchronized(Configuration.class) {
       REGISTRY.put(this, null);
     }
+    this.classLoader = other.classLoader;
+    this.loadDefaults = other.loadDefaults;
+    setQuietMode(other.getQuietMode());
   }
   
   /**
@@ -1025,28 +1025,26 @@ public class Configuration implements Iterable<Map.Entry<String,String>>,
     getProps().setProperty(name, value);
     String newSource = (source == null ? "programmatically" : source);
 
-    synchronized (this) {
-      if (!isDeprecated(name)) {
-        updatingResource.put(name, new String[] {newSource});
-        String[] altNames = getAlternativeNames(name);
-        if(altNames != null) {
-          for(String n: altNames) {
-            if(!n.equals(name)) {
-              getOverlay().setProperty(n, value);
-              getProps().setProperty(n, value);
-              updatingResource.put(n, new String[] {newSource});
-            }
+    if (!isDeprecated(name)) {
+      updatingResource.put(name, new String[] {newSource});
+      String[] altNames = getAlternativeNames(name);
+      if(altNames != null) {
+        for(String n: altNames) {
+          if(!n.equals(name)) {
+            getOverlay().setProperty(n, value);
+            getProps().setProperty(n, value);
+            updatingResource.put(n, new String[] {newSource});
           }
         }
       }
-      else {
-        String[] names = handleDeprecation(deprecationContext.get(), name);
-        String altSource = "because " + name + " is deprecated";
-        for(String n : names) {
-          getOverlay().setProperty(n, value);
-          getProps().setProperty(n, value);
-          updatingResource.put(n, new String[] {altSource});
-        }
+    }
+    else {
+      String[] names = handleDeprecation(deprecationContext.get(), name);
+      String altSource = "because " + name + " is deprecated";
+      for(String n : names) {
+        getOverlay().setProperty(n, value);
+        getProps().setProperty(n, value);
+        updatingResource.put(n, new String[] {altSource});
       }
     }
   }
@@ -2279,7 +2277,7 @@ public class Configuration implements Iterable<Map.Entry<String,String>>,
    *
    * @return final parameter set.
    */
-  public synchronized Set<String> getFinalParameters() {
+  public Set<String> getFinalParameters() {
     return new HashSet<String>(finalParameters);
   }
 
@@ -2542,18 +2540,14 @@ public class Configuration implements Iterable<Map.Entry<String,String>>,
     if (value != null) {
       if (!finalParameters.contains(attr)) {
         properties.setProperty(attr, value);
-        synchronized(this) {
-          updatingResource.put(attr, source);
-        }
+        updatingResource.put(attr, source);
       } else if (!value.equals(properties.getProperty(attr))) {
         LOG.warn(name+":an attempt to override final parameter: "+attr
             +";  Ignoring.");
       }
     }
     if (finalParameter) {
-      synchronized(this) {
-        finalParameters.add(attr);
-      }
+      finalParameters.add(attr);
     }
   }
 
@@ -2747,7 +2741,7 @@ public class Configuration implements Iterable<Map.Entry<String,String>>,
   }
 
   @Override
-  public synchronized void readFields(DataInput in) throws IOException {
+  public void readFields(DataInput in) throws IOException {
     clear();
     int size = WritableUtils.readVInt(in);
     for(int i=0; i < size; ++i) {
@@ -2759,8 +2753,9 @@ public class Configuration implements Iterable<Map.Entry<String,String>>,
     }
   }
 
+  //@Override
   @Override
-  public synchronized void write(DataOutput out) throws IOException {
+  public void write(DataOutput out) throws IOException {
     Properties props = getProps();
     WritableUtils.writeVInt(out, props.size());
     for(Map.Entry<Object, Object> item: props.entrySet()) {