From f6578999d166ed0f824bfdc8c3060a533b009ea3 Mon Sep 17 00:00:00 2001 From: Jason Lowe Date: Mon, 29 Aug 2016 19:57:38 +0000 Subject: [PATCH] MAPREDUCE-6768. TestRecovery.testSpeculative failed with NPE. Contributed by Haibo Chen (cherry picked from commit 44d0af2611cb565d8ec68f92e27937342646cca5) --- .../org/apache/hadoop/mapreduce/v2/app/TestRecovery.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-app/src/test/java/org/apache/hadoop/mapreduce/v2/app/TestRecovery.java b/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-app/src/test/java/org/apache/hadoop/mapreduce/v2/app/TestRecovery.java index 7c609924762..b624f694954 100644 --- a/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-app/src/test/java/org/apache/hadoop/mapreduce/v2/app/TestRecovery.java +++ b/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() { + @Override public Boolean get() { + return t2a.getAssignedContainerID() != null; + } + }, 10, 10000); ContainerId t1a2contId = task1Attempt2.getAssignedContainerID(); LOG.info(t1a2contId.toString());