You are viewing a plain text version of this content. The canonical link for it is here.
Posted to yarn-commits@hadoop.apache.org by bo...@apache.org on 2012/11/10 00:52:34 UTC

svn commit: r1407697 - in /hadoop/common/branches/branch-0.23/hadoop-yarn-project: CHANGES.txt hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestApplicationCleanup.java

Author: bobby
Date: Fri Nov  9 23:52:34 2012
New Revision: 1407697

URL: http://svn.apache.org/viewvc?rev=1407697&view=rev
Log:
YARN-206. TestApplicationCleanup.testContainerCleanup occasionally fails (jlowe via bobby)

Modified:
    hadoop/common/branches/branch-0.23/hadoop-yarn-project/CHANGES.txt
    hadoop/common/branches/branch-0.23/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-0.23/hadoop-yarn-project/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.23/hadoop-yarn-project/CHANGES.txt?rev=1407697&r1=1407696&r2=1407697&view=diff
==============================================================================
--- hadoop/common/branches/branch-0.23/hadoop-yarn-project/CHANGES.txt (original)
+++ hadoop/common/branches/branch-0.23/hadoop-yarn-project/CHANGES.txt Fri Nov  9 23:52:34 2012
@@ -77,6 +77,9 @@ Release 0.23.5 - UNRELEASED
     YARN-201. Fix CapacityScheduler to be less conservative for starved 
     off-switch requests. (jlowe via acmurthy) 
 
+    YARN-206. TestApplicationCleanup.testContainerCleanup occasionally fails
+    (jlowe via bobby)
+
 Release 0.23.4 - UNRELEASED
 
   INCOMPATIBLE CHANGES

Modified: hadoop/common/branches/branch-0.23/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-0.23/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestApplicationCleanup.java?rev=1407697&r1=1407696&r2=1407697&view=diff
==============================================================================
--- hadoop/common/branches/branch-0.23/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-0.23/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestApplicationCleanup.java Fri Nov  9 23:52:34 2012
@@ -76,41 +76,40 @@ public class TestApplicationCleanup {
         new ArrayList<ContainerId>());
     
     //kick the scheduler
-    nm1.nodeHeartbeat(true);
+    HeartbeatResponse resp = nm1.nodeHeartbeat(true);
     List<Container> conts = am.allocate(new ArrayList<ResourceRequest>(),
         new ArrayList<ContainerId>()).getAllocatedContainers();
     int contReceived = conts.size();
     int waitCount = 0;
-    while (contReceived < request && waitCount++ < 20) {
+    while (contReceived < request && waitCount++ < 200) {
+      LOG.info("Got " + contReceived + " containers. Waiting to get "
+               + request);
+      Thread.sleep(100);
       conts = am.allocate(new ArrayList<ResourceRequest>(),
           new ArrayList<ContainerId>()).getAllocatedContainers();
       contReceived += conts.size();
-      LOG.info("Got " + contReceived + " containers. Waiting to get "
-               + request);
-      Thread.sleep(2000);
     }
-    Assert.assertEquals(request, conts.size());
+    Assert.assertEquals(request, contReceived);
     
     am.unregisterAppAttempt();
     am.waitForState(RMAppAttemptState.FINISHED);
 
-    int cleanedConts = 0;
-    int cleanedApps = 0;
-    List<ContainerId> contsToClean = null;
-    List<ApplicationId> apps = null;
-    
     //currently only containers are cleaned via this
     //AM container is cleaned via container launcher
+    List<ContainerId> contsToClean = resp.getContainersToCleanupList();
+    List<ApplicationId> apps = resp.getApplicationsToCleanupList();
+    int cleanedConts = contsToClean.size();
+    int cleanedApps = apps.size();
     waitCount = 0;
-    while ((cleanedConts < 3 || cleanedApps < 1) && waitCount++ < 20) {
-      HeartbeatResponse resp = nm1.nodeHeartbeat(true);
-      contsToClean = resp.getContainersToCleanupList();
-      apps = resp.getApplicationsToCleanupList();
+    while ((cleanedConts < 3 || cleanedApps < 1) && waitCount++ < 200) {
       LOG.info("Waiting to get cleanup events.. cleanedConts: "
           + cleanedConts + " cleanedApps: " + cleanedApps);
+      Thread.sleep(100);
+      resp = nm1.nodeHeartbeat(true);
+      contsToClean = resp.getContainersToCleanupList();
+      apps = resp.getApplicationsToCleanupList();
       cleanedConts += contsToClean.size();
       cleanedApps += apps.size();
-      Thread.sleep(1000);
     }
     
     Assert.assertEquals(1, apps.size());
@@ -168,20 +167,20 @@ public class TestApplicationCleanup {
         new ArrayList<ContainerId>()).getAllocatedContainers();
     int contReceived = conts.size();
     int waitCount = 0;
-    while (contReceived < request && waitCount++ < 20) {
+    while (contReceived < request && waitCount++ < 200) {
+      LOG.info("Got " + contReceived + " containers. Waiting to get "
+               + request);
+      Thread.sleep(100);
       conts = am.allocate(new ArrayList<ResourceRequest>(),
           new ArrayList<ContainerId>()).getAllocatedContainers();
       dispatcher.await();
       contReceived += conts.size();
-      LOG.info("Got " + contReceived + " containers. Waiting to get "
-               + request);
-      Thread.sleep(2000);
     }
-    Assert.assertEquals(request, conts.size());
+    Assert.assertEquals(request, contReceived);
 
     // Release a container.
     ArrayList<ContainerId> release = new ArrayList<ContainerId>();
-    release.add(conts.get(1).getId());
+    release.add(conts.get(0).getId());
     am.allocate(new ArrayList<ResourceRequest>(), release);
     dispatcher.await();
 
@@ -192,7 +191,7 @@ public class TestApplicationCleanup {
         new HashMap<ApplicationId, List<ContainerStatus>>();
     ArrayList<ContainerStatus> containerStatusList =
         new ArrayList<ContainerStatus>();
-    containerStatusList.add(BuilderUtils.newContainerStatus(conts.get(1)
+    containerStatusList.add(BuilderUtils.newContainerStatus(conts.get(0)
       .getId(), ContainerState.RUNNING, "nothing", 0));
     containerStatuses.put(app.getApplicationId(), containerStatusList);
 
@@ -201,13 +200,13 @@ public class TestApplicationCleanup {
     List<ContainerId> contsToClean = resp.getContainersToCleanupList();
     int cleanedConts = contsToClean.size();
     waitCount = 0;
-    while (cleanedConts < 1 && waitCount++ < 20) {
+    while (cleanedConts < 1 && waitCount++ < 200) {
+      LOG.info("Waiting to get cleanup events.. cleanedConts: " + cleanedConts);
+      Thread.sleep(100);
       resp = nm1.nodeHeartbeat(true);
       dispatcher.await();
       contsToClean = resp.getContainersToCleanupList();
-      LOG.info("Waiting to get cleanup events.. cleanedConts: " + cleanedConts);
       cleanedConts += contsToClean.size();
-      Thread.sleep(1000);
     }
     LOG.info("Got cleanup for " + contsToClean.get(0));
     Assert.assertEquals(1, cleanedConts);
@@ -218,7 +217,7 @@ public class TestApplicationCleanup {
         + "NM getting cleanup");
     containerStatuses.clear();
     containerStatusList.clear();
-    containerStatusList.add(BuilderUtils.newContainerStatus(conts.get(1)
+    containerStatusList.add(BuilderUtils.newContainerStatus(conts.get(0)
       .getId(), ContainerState.RUNNING, "nothing", 0));
     containerStatuses.put(app.getApplicationId(), containerStatusList);
 
@@ -229,13 +228,13 @@ public class TestApplicationCleanup {
     // The cleanup list won't be instantaneous as it is given out by scheduler
     // and not RMNodeImpl.
     waitCount = 0;
-    while (cleanedConts < 1 && waitCount++ < 20) {
+    while (cleanedConts < 1 && waitCount++ < 200) {
+      LOG.info("Waiting to get cleanup events.. cleanedConts: " + cleanedConts);
+      Thread.sleep(100);
       resp = nm1.nodeHeartbeat(true);
       dispatcher.await();
       contsToClean = resp.getContainersToCleanupList();
-      LOG.info("Waiting to get cleanup events.. cleanedConts: " + cleanedConts);
       cleanedConts += contsToClean.size();
-      Thread.sleep(1000);
     }
     LOG.info("Got cleanup for " + contsToClean.get(0));
     Assert.assertEquals(1, cleanedConts);