hadoop-common-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From junping...@apache.org
Subject hadoop git commit: HADOOP-12406. Fixed AbstractMapWritable.readFields to use the thread's ClassLoader to load class instead of System ClassLoader. Contributed by Nadeem Douba.
Date Thu, 05 Jan 2017 21:26:49 GMT
Repository: hadoop
Updated Branches:
  refs/heads/branch-2.8 689d19575 -> 9721735ce


HADOOP-12406. Fixed AbstractMapWritable.readFields to use the thread's ClassLoader to load
class instead of System ClassLoader. Contributed by Nadeem Douba.

(cherry picked from commit 069c6c62def4a0f94382e9f149581d8e22f6d31c)
(cherry picked from commit 4041d2b49e32c7bcf4ec29428b8a85b07b9f74e0)


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

Branch: refs/heads/branch-2.8
Commit: 9721735ce979eabdb4fe0c0252fa2c7eebb50b3a
Parents: 689d195
Author: Vinod Kumar Vavilapalli <vinodkv@apache.org>
Authored: Mon Apr 11 12:00:51 2016 -0700
Committer: Junping Du <junping_du@apache.org>
Committed: Thu Jan 5 13:23:47 2017 -0800

----------------------------------------------------------------------
 .../org/apache/hadoop/io/AbstractMapWritable.java   | 16 +++++++++-------
 1 file changed, 9 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hadoop/blob/9721735c/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/io/AbstractMapWritable.java
----------------------------------------------------------------------
diff --git a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/io/AbstractMapWritable.java
b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/io/AbstractMapWritable.java
index 7dd9e69..44e0bdc 100644
--- a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/io/AbstractMapWritable.java
+++ b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/io/AbstractMapWritable.java
@@ -181,20 +181,22 @@ public abstract class AbstractMapWritable implements Writable, Configurable
{
   public void readFields(DataInput in) throws IOException {
     
     // Get the number of "unknown" classes
-    
     newClasses = in.readByte();
-    
+
+    // Use the classloader of the current thread to load classes instead of the
+    // system-classloader so as to support both client-only and inside-a-MR-job
+    // use-cases. The context-loader by default eventually falls back to the
+    // system one, so there should be no cases where changing this is an issue.
+    ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
+
     // Then read in the class names and add them to our tables
-    
     for (int i = 0; i < newClasses; i++) {
       byte id = in.readByte();
       String className = in.readUTF();
       try {
-        addToMap(Class.forName(className), id);
-        
+        addToMap(classLoader.loadClass(className), id);
       } catch (ClassNotFoundException e) {
-        throw new IOException("can't find class: " + className + " because "+
-            e.getMessage());
+        throw new IOException(e);
       }
     }
   }    


---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org


Mime
View raw message