Bladeren bron

YARN-730. Fix NMClientAsync to remove completed containers. Contributed by Zhijie Shen.

git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/trunk@1488840 13f79535-47bb-0310-9956-ffa450edef68
Arun Murthy 12 jaren geleden
bovenliggende
commit
52b189db90

+ 3 - 0
hadoop-yarn-project/CHANGES.txt

@@ -406,6 +406,9 @@ Release 2.1.0-beta - UNRELEASED
     YARN-733. Fixed TestNMClient from failing occasionally. (Zhijie Shen via
     vinodkv)
 
+    YARN-730. Fix NMClientAsync to remove completed containers. (Zhijie Shen
+    via acmurthy)
+
   BREAKDOWN OF HADOOP-8562 SUBTASKS AND RELATED JIRAS
 
     YARN-158. Yarn creating package-info.java must not depend on sh.

+ 3 - 0
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/NMClientAsync.java

@@ -615,6 +615,9 @@ public class NMClientAsync extends AbstractService {
           LOG.info("Container " + containerId + " is already stopped or failed");
         } else {
           container.handle(event);
+          if (isCompletelyDone(container)) {
+            containers.remove(containerId);
+          }
         }
       }
     }

+ 2 - 0
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/test/java/org/apache/hadoop/yarn/client/TestNMClientAsync.java

@@ -122,6 +122,8 @@ public class TestNMClientAsync {
     }
     Assert.assertEquals("Error occurs in ContainerEventProcessor", 0,
         ((MockNMClientAsync1) asyncClient).errorMsgs.size());
+    Assert.assertEquals("Completed container is not removed", 0,
+        asyncClient.containers.size());
     asyncClient.stop();
     Assert.assertFalse(
         "The thread of Container Management Event Dispatcher is still alive",