hadoop git commit: YARN-9071. Improved status update for reinitialized containers. Contributed by Chandni Singh
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
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); -