From bea8f8190f036375981ef4ceda409f9199730740 Mon Sep 17 00:00:00 2001 From: Jason Lowe Date: Tue, 28 Mar 2017 09:33:26 -0500 Subject: [PATCH] YARN-6359. TestRM#testApplicationKillAtAcceptedState fails rarely due to race condition. Contributed by Robert Kanter --- .../yarn/server/resourcemanager/TestRM.java | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestRM.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestRM.java index d84c77d35d6..35277509590 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestRM.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestRM.java @@ -18,6 +18,8 @@ package org.apache.hadoop.yarn.server.resourcemanager; +import com.google.common.base.Supplier; +import org.apache.hadoop.test.GenericTestUtils; import org.apache.hadoop.yarn.event.DrainDispatcher; import org.junit.Before; import static org.mockito.Matchers.argThat; @@ -590,9 +592,9 @@ protected Dispatcher createDispatcher() { }; // test metrics - QueueMetrics metrics = rm.getResourceScheduler().getRootQueueMetrics(); - int appsKilled = metrics.getAppsKilled(); - int appsSubmitted = metrics.getAppsSubmitted(); + final QueueMetrics metrics = rm.getResourceScheduler().getRootQueueMetrics(); + final int appsKilled = metrics.getAppsKilled(); + final int appsSubmitted = metrics.getAppsSubmitted(); rm.start(); @@ -630,7 +632,13 @@ protected Dispatcher createDispatcher() { rm.waitForState(application.getApplicationId(), RMAppState.KILLED); // test metrics - metrics = rm.getResourceScheduler().getRootQueueMetrics(); + GenericTestUtils.waitFor(new Supplier() { + @Override + public Boolean get() { + return appsKilled + 1 == metrics.getAppsKilled() + && appsSubmitted + 1 == metrics.getAppsSubmitted(); + } + }, 100, 10000); Assert.assertEquals(appsKilled + 1, metrics.getAppsKilled()); Assert.assertEquals(appsSubmitted + 1, metrics.getAppsSubmitted()); }