hadoop git commit: YARN-9071. Improved status update for reinitialized containers. Contributed by Chandni Singh

2018-12-05 Thread eyang
Repository: hadoop
Updated Branches:
  refs/heads/branch-3.1 293c992e8 -> 7ef4ff190


YARN-9071.  Improved status update for reinitialized containers.
Contributed by Chandni Singh

(cherry picked from commit 1b790f4dd1f682423d5dbb8e70c6225cbddce989)


Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/7ef4ff19
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/7ef4ff19
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/7ef4ff19

Branch: refs/heads/branch-3.1
Commit: 7ef4ff19057bbb449385358ce0bc2c635ab2b5bb
Parents: 293c992
Author: Eric Yang 
Authored: Wed Dec 5 17:00:56 2018 -0500
Committer: Eric Yang 
Committed: Wed Dec 5 19:05:26 2018 -0500

--
 .../component/instance/ComponentInstance.java   | 76 +---
 .../instance/TestComponentInstance.java | 36 ++
 .../container/ContainerImpl.java| 23 --
 .../monitor/ContainerMetrics.java   |  8 ++-
 .../monitor/ContainerStopMonitoringEvent.java   | 12 
 .../monitor/ContainersMonitorImpl.java  |  6 +-
 .../monitor/TestContainerMetrics.java   |  6 +-
 7 files changed, 131 insertions(+), 36 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/hadoop/blob/7ef4ff19/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services/hadoop-yarn-services-core/src/main/java/org/apache/hadoop/yarn/service/component/instance/ComponentInstance.java
--
diff --git 
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services/hadoop-yarn-services-core/src/main/java/org/apache/hadoop/yarn/service/component/instance/ComponentInstance.java
 
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services/hadoop-yarn-services-core/src/main/java/org/apache/hadoop/yarn/service/component/instance/ComponentInstance.java
index 86b0e32..0145847 100644
--- 
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services/hadoop-yarn-services-core/src/main/java/org/apache/hadoop/yarn/service/component/instance/ComponentInstance.java
+++ 
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services/hadoop-yarn-services-core/src/main/java/org/apache/hadoop/yarn/service/component/instance/ComponentInstance.java
@@ -154,10 +154,14 @@ public class ComponentInstance implements 
EventHandler,
   REINITIALIZED), START, new StartedAfterUpgradeTransition())
   .addTransition(CANCEL_UPGRADING, EnumSet.of(CANCEL_UPGRADING, INIT),
   STOP, new StoppedAfterCancelUpgradeTransition())
+
+  // FROM REINITIALIZED
   .addTransition(REINITIALIZED, CANCEL_UPGRADING, CANCEL_UPGRADE,
   new CancelledAfterReinitTransition())
   .addTransition(REINITIALIZED, READY, BECOME_READY,
new ContainerBecomeReadyTransition(true))
+  .addTransition(REINITIALIZED, REINITIALIZED, STOP,
+  new StoppedAfterUpgradeTransition())
   .installTopology();
 
   public ComponentInstance(Component component,
@@ -184,20 +188,7 @@ public class ComponentInstance implements 
EventHandler,
 @Override public void transition(ComponentInstance compInstance,
 ComponentInstanceEvent event) {
   // Query container status for ip and host
-  boolean cancelOnSuccess = true;
-  if (compInstance.getCompSpec().getArtifact() != null && compInstance
-  .getCompSpec().getArtifact().getType() == Artifact.TypeEnum.DOCKER) {
-// A docker container might get a different IP if the container is
-// relaunched by the NM, so we need to keep checking the status.
-// This is a temporary fix until the NM provides a callback for
-// container relaunch (see YARN-8265).
-cancelOnSuccess = false;
-  }
-  compInstance.containerStatusFuture =
-  compInstance.scheduler.executorService.scheduleAtFixedRate(
-  new ContainerStatusRetriever(compInstance.scheduler,
-  event.getContainerId(), compInstance, cancelOnSuccess), 0, 1,
-  TimeUnit.SECONDS);
+  compInstance.initializeStatusRetriever(event);
   long containerStartTime = System.currentTimeMillis();
   try {
 ContainerTokenIdentifier containerTokenIdentifier = BuilderUtils
@@ -277,6 +268,7 @@ public class ComponentInstance implements 
EventHandler,
 
   instance.upgradeInProgress.set(false);
   instance.setContainerState(ContainerState.RUNNING_BUT_UNREADY);
+  instance.initializeStatusRetriever(event);
 
   Component.UpgradeStatus status = instance.getState().equals(UPGRADING) ?
   instance.component.getUpgradeStatus() :
@@ -572,13 +564,9 @@ public class ComponentInstance implements 
EventHandler,
   

hadoop git commit: YARN-9071. Improved status update for reinitialized containers. Contributed by Chandni Singh

2018-12-05 Thread eyang
Repository: hadoop
Updated Branches:
  refs/heads/trunk 1dabb31cd -> 1b790f4dd


YARN-9071.  Improved status update for reinitialized containers.
Contributed by Chandni Singh


Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/1b790f4d
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/1b790f4d
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/1b790f4d

Branch: refs/heads/trunk
Commit: 1b790f4dd1f682423d5dbb8e70c6225cbddce989
Parents: 1dabb31
Author: Eric Yang 
Authored: Wed Dec 5 17:00:56 2018 -0500
Committer: Eric Yang 
Committed: Wed Dec 5 17:00:56 2018 -0500

--
 .../component/instance/ComponentInstance.java   | 76 +---
 .../instance/TestComponentInstance.java | 36 ++
 .../container/ContainerImpl.java| 23 --
 .../monitor/ContainerMetrics.java   |  8 ++-
 .../monitor/ContainerStopMonitoringEvent.java   | 12 
 .../monitor/ContainersMonitorImpl.java  |  6 +-
 .../monitor/TestContainerMetrics.java   |  6 +-
 7 files changed, 131 insertions(+), 36 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/hadoop/blob/1b790f4d/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services/hadoop-yarn-services-core/src/main/java/org/apache/hadoop/yarn/service/component/instance/ComponentInstance.java
--
diff --git 
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services/hadoop-yarn-services-core/src/main/java/org/apache/hadoop/yarn/service/component/instance/ComponentInstance.java
 
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services/hadoop-yarn-services-core/src/main/java/org/apache/hadoop/yarn/service/component/instance/ComponentInstance.java
index 25aba77..ef844a5 100644
--- 
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services/hadoop-yarn-services-core/src/main/java/org/apache/hadoop/yarn/service/component/instance/ComponentInstance.java
+++ 
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services/hadoop-yarn-services-core/src/main/java/org/apache/hadoop/yarn/service/component/instance/ComponentInstance.java
@@ -152,10 +152,14 @@ public class ComponentInstance implements 
EventHandler,
   REINITIALIZED), START, new StartedAfterUpgradeTransition())
   .addTransition(CANCEL_UPGRADING, EnumSet.of(CANCEL_UPGRADING, INIT),
   STOP, new StoppedAfterCancelUpgradeTransition())
+
+  // FROM REINITIALIZED
   .addTransition(REINITIALIZED, CANCEL_UPGRADING, CANCEL_UPGRADE,
   new CancelledAfterReinitTransition())
   .addTransition(REINITIALIZED, READY, BECOME_READY,
new ContainerBecomeReadyTransition(true))
+  .addTransition(REINITIALIZED, REINITIALIZED, STOP,
+  new StoppedAfterUpgradeTransition())
   .installTopology();
 
   public ComponentInstance(Component component,
@@ -182,20 +186,7 @@ public class ComponentInstance implements 
EventHandler,
 @Override public void transition(ComponentInstance compInstance,
 ComponentInstanceEvent event) {
   // Query container status for ip and host
-  boolean cancelOnSuccess = true;
-  if (compInstance.getCompSpec().getArtifact() != null && compInstance
-  .getCompSpec().getArtifact().getType() == Artifact.TypeEnum.DOCKER) {
-// A docker container might get a different IP if the container is
-// relaunched by the NM, so we need to keep checking the status.
-// This is a temporary fix until the NM provides a callback for
-// container relaunch (see YARN-8265).
-cancelOnSuccess = false;
-  }
-  compInstance.containerStatusFuture =
-  compInstance.scheduler.executorService.scheduleAtFixedRate(
-  new ContainerStatusRetriever(compInstance.scheduler,
-  event.getContainerId(), compInstance, cancelOnSuccess), 0, 1,
-  TimeUnit.SECONDS);
+  compInstance.initializeStatusRetriever(event);
   long containerStartTime = System.currentTimeMillis();
   try {
 ContainerTokenIdentifier containerTokenIdentifier = BuilderUtils
@@ -275,6 +266,7 @@ public class ComponentInstance implements 
EventHandler,
 
   instance.upgradeInProgress.set(false);
   instance.setContainerState(ContainerState.RUNNING_BUT_UNREADY);
+  instance.initializeStatusRetriever(event);
 
   Component.UpgradeStatus status = instance.getState().equals(UPGRADING) ?
   instance.component.getUpgradeStatus() :
@@ -570,13 +562,9 @@ public class ComponentInstance implements 
EventHandler,
   instance.setContainerState(ContainerState.UPGRADING);
   instance.component.decContainersReady(false);
 
-