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(); }