ソースを参照

MAPREDUCE-6768. TestRecovery.testSpeculative failed with NPE. Contributed by Haibo Chen
(cherry picked from commit 44d0af2611cb565d8ec68f92e27937342646cca5)

Jason Lowe 8 年 前
コミット
a852800d2f

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

@@ -15,6 +15,9 @@ Release 2.7.4 - UNRELEASED
     MAPREDUCE-6744. Increase timeout on TestDFSIO tests (Eric Badger via
     jlowe)
 
+    MAPREDUCE-6768. TestRecovery.testSpeculative failed with NPE (Haibo Chen
+    via jlowe)
+
 Release 2.7.3 - UNRELEASED
 
   INCOMPATIBLE CHANGES

+ 9 - 0
hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-app/src/test/java/org/apache/hadoop/mapreduce/v2/app/TestRecovery.java

@@ -25,6 +25,7 @@ import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
+import com.google.common.base.Supplier;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.IOException;
@@ -96,6 +97,7 @@ import org.apache.hadoop.yarn.api.records.ApplicationId;
 import org.apache.hadoop.yarn.api.records.ContainerId;
 import org.apache.hadoop.yarn.api.records.Resource;
 import org.apache.hadoop.yarn.event.EventHandler;
+import org.apache.hadoop.test.GenericTestUtils;
 import org.apache.hadoop.yarn.util.Clock;
 import org.apache.hadoop.yarn.util.SystemClock;
 import org.junit.Test;
@@ -1195,7 +1197,14 @@ public class TestRecovery {
     TaskAttempt task1Attempt1 = t1it.next();
     TaskAttempt task1Attempt2 = t1it.next();
     TaskAttempt task2Attempt = mapTask2.getAttempts().values().iterator().next();
+    final TaskAttempt t2a = task2Attempt;
 
+    // wait for the second task attempt to be assigned.
+    GenericTestUtils.waitFor(new Supplier<Boolean>() {
+      @Override public Boolean get() {
+        return t2a.getAssignedContainerID() != null;
+      }
+    }, 10, 10000);
     ContainerId t1a2contId = task1Attempt2.getAssignedContainerID();
 
     LOG.info(t1a2contId.toString());