浏览代码

MAPREDUCE-2629. Workaround a JVM class loading quirk which prevents JIT compilation of inner classes methods in ReduceContextImpl. Contributed by Eric Caspole.

git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/branches/branch-0.23@1187182 13f79535-47bb-0310-9956-ffa450edef68
Todd Lipcon 13 年之前
父节点
当前提交
5acc010db8

+ 3 - 0
hadoop-mapreduce-project/CHANGES.txt

@@ -375,6 +375,9 @@ Release 0.23.0 - Unreleased
 
     MAPREDUCE-901. Efficient framework counters. (llu via acmurthy)
 
+    MAPREDUCE-2629. Workaround a JVM class loading quirk which prevents
+    JIT compilation of inner classes methods in ReduceContextImpl.
+
   BUG FIXES
 
     MAPREDUCE-2603. Disable High-Ram emulation in system tests. 

+ 8 - 4
hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/main/java/org/apache/hadoop/mapreduce/task/ReduceContextImpl.java

@@ -176,11 +176,15 @@ public class ReduceContextImpl<KEYIN,VALUEIN,KEYOUT,VALUEOUT>
     return value;
   }
   
+  BackupStore<KEYIN,VALUEIN> getBackupStore() {
+    return backupStore;
+  }
+  
   protected class ValueIterator implements ReduceContext.ValueIterator<VALUEIN> {
 
     private boolean inReset = false;
     private boolean clearMarkFlag = false;
-    
+
     @Override
     public boolean hasNext() {
       try {
@@ -247,7 +251,7 @@ public class ReduceContextImpl<KEYIN,VALUEIN,KEYOUT,VALUEOUT>
 
     @Override
     public void mark() throws IOException {
-      if (backupStore == null) {
+      if (getBackupStore() == null) {
         backupStore = new BackupStore<KEYIN,VALUEIN>(conf, taskid);
       }
       isMarked = true;
@@ -290,7 +294,7 @@ public class ReduceContextImpl<KEYIN,VALUEIN,KEYOUT,VALUEOUT>
 
     @Override
     public void clearMark() throws IOException {
-      if (backupStore == null) {
+      if (getBackupStore() == null) {
         return;
       }
       if (inReset) {
@@ -308,7 +312,7 @@ public class ReduceContextImpl<KEYIN,VALUEIN,KEYOUT,VALUEOUT>
      * @throws IOException
      */
     public void resetBackupStore() throws IOException {
-      if (backupStore == null) {
+      if (getBackupStore() == null) {
         return;
       }
       inReset = isMarked = false;