Author: vinodkv
Date: Mon Dec 30 22:22:24 2013
New Revision: 1554329

URL: http://svn.apache.org/r1554329
Log:
YARN-1522. Fixed a race condition in the test TestApplicationCleanup that was 
causing it to randomly fail. Contributed by Liyin Liang.
svn merge --ignore-ancestry -c 1554328 ../../trunk/

Modified:
    hadoop/common/branches/branch-2/hadoop-yarn-project/CHANGES.txt
    
hadoop/common/branches/branch-2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestApplicationCleanup.java

Modified: hadoop/common/branches/branch-2/hadoop-yarn-project/CHANGES.txt
URL: 
http://svn.apache.org/viewvc/hadoop/common/branches/branch-2/hadoop-yarn-project/CHANGES.txt?rev=1554329&r1=1554328&r2=1554329&view=diff
==============================================================================
--- hadoop/common/branches/branch-2/hadoop-yarn-project/CHANGES.txt (original)
+++ hadoop/common/branches/branch-2/hadoop-yarn-project/CHANGES.txt Mon Dec 30 
22:22:24 2013
@@ -259,6 +259,9 @@ Release 2.4.0 - UNRELEASED
     YARN-1527. Fix yarn rmadmin command to print the correct usage info.
     (Akira AJISAKA via jianhe)
 
+    YARN-1522. Fixed a race condition in the test TestApplicationCleanup that 
was
+    causing it to randomly fail. (Liyin Liang via vinodkv)
+
 Release 2.3.0 - UNRELEASED
 
   INCOMPATIBLE CHANGES

Modified: 
hadoop/common/branches/branch-2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestApplicationCleanup.java
URL: 
http://svn.apache.org/viewvc/hadoop/common/branches/branch-2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestApplicationCleanup.java?rev=1554329&r1=1554328&r2=1554329&view=diff
==============================================================================
--- 
hadoop/common/branches/branch-2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestApplicationCleanup.java
 (original)
+++ 
hadoop/common/branches/branch-2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestApplicationCleanup.java
 Mon Dec 30 22:22:24 2013
@@ -100,26 +100,32 @@ public class TestApplicationCleanup {
     //currently only containers are cleaned via this
     //AM container is cleaned via container launcher
     resp = nm1.nodeHeartbeat(true);
-    List<ContainerId> contsToClean = resp.getContainersToCleanup();
-    List<ApplicationId> apps = resp.getApplicationsToCleanup();
-    int cleanedConts = contsToClean.size();
-    int cleanedApps = apps.size();
+    List<ContainerId> containersToCleanup = resp.getContainersToCleanup();
+    List<ApplicationId> appsToCleanup = resp.getApplicationsToCleanup();
+    int numCleanedContainers = containersToCleanup.size();
+    int numCleanedApps = appsToCleanup.size();
     waitCount = 0;
-    while ((cleanedConts < 2 || cleanedApps < 1) && waitCount++ < 200) {
+    while ((numCleanedContainers < 2 || numCleanedApps < 1)
+        && waitCount++ < 200) {
       LOG.info("Waiting to get cleanup events.. cleanedConts: "
-          + cleanedConts + " cleanedApps: " + cleanedApps);
+          + numCleanedContainers + " cleanedApps: " + numCleanedApps);
       Thread.sleep(100);
       resp = nm1.nodeHeartbeat(true);
-      contsToClean = resp.getContainersToCleanup();
-      apps = resp.getApplicationsToCleanup();
-      cleanedConts += contsToClean.size();
-      cleanedApps += apps.size();
+      List<ContainerId> deltaContainersToCleanup =
+          resp.getContainersToCleanup();
+      List<ApplicationId> deltaAppsToCleanup = resp.getApplicationsToCleanup();
+      // Add the deltas to the global list
+      containersToCleanup.addAll(deltaContainersToCleanup);
+      appsToCleanup.addAll(deltaAppsToCleanup);
+      // Update counts now
+      numCleanedContainers = containersToCleanup.size();
+      numCleanedApps = appsToCleanup.size();
     }
     
-    Assert.assertEquals(1, apps.size());
-    Assert.assertEquals(app.getApplicationId(), apps.get(0));
-    Assert.assertEquals(1, cleanedApps);
-    Assert.assertEquals(2, cleanedConts);
+    Assert.assertEquals(1, appsToCleanup.size());
+    Assert.assertEquals(app.getApplicationId(), appsToCleanup.get(0));
+    Assert.assertEquals(1, numCleanedApps);
+    Assert.assertEquals(2, numCleanedContainers);
 
     rm.stop();
   }


Reply via email to