[ https://issues.apache.org/jira/browse/YARN-9074?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Zhaohui Xin updated YARN-9074: ------------------------------ Description: {code:java} @Override public void transition(ContainerImpl container, ContainerEvent event) { container.setIsReInitializing(false); // Set exit code to 0 on success container.exitCode = 0; // TODO: Add containerWorkDir to the deletion service. if (DockerLinuxContainerRuntime.isDockerContainerRequested( container.daemonConf, container.getLaunchContext().getEnvironment())) { removeDockerContainer(container); } if (clCleanupRequired) { container.dispatcher.getEventHandler().handle( new ContainersLauncherEvent(container, ContainersLauncherEventType.CLEANUP_CONTAINER)); } container.cleanup(); }{code} Now, when container is finished, NM firstly execute "_docker rm xxx"_ to remove it and this thread is placed in DeletionService. see more in YARN-5366 . Next, NM will execute "_docker stop_" and "docker kill" command. these tow commands are wrapped up in ContainerCleanup thread and executed by ContainersLauncher. see more in YARN-7644. The above will cause the container's cleanup to be split into two threads. I think we should refactor these code to make all docker container killing process be place in ContainerCleanup thread and "_docker rm_" should be executed last. was: {code:java} @Override public void transition(ContainerImpl container, ContainerEvent event) { container.setIsReInitializing(false); // Set exit code to 0 on success container.exitCode = 0; // TODO: Add containerWorkDir to the deletion service. if (DockerLinuxContainerRuntime.isDockerContainerRequested( container.daemonConf, container.getLaunchContext().getEnvironment())) { removeDockerContainer(container); } if (clCleanupRequired) { container.dispatcher.getEventHandler().handle( new ContainersLauncherEvent(container, ContainersLauncherEventType.CLEANUP_CONTAINER)); } container.cleanup(); }{code} Now, when container is finished, NM firstly execute "_docker rm xxx"_ to remove it and this thread is placed in deletionService. see more in YARN-5366 . Next, NM will execute "_docker stop_" and "docker kill" command. these tow commands are wrapped up in ContainerCleanup thread and executed by ContainersLauncher. see more in YARN-7644. The above will cause the container's cleanup to be split into two threads. I think we should refactor these code to make all docker container killing process be place in ContainerCleanup thread and "_docker rm_" should be executed last. > Docker container rm command should be executed after stop > --------------------------------------------------------- > > Key: YARN-9074 > URL: https://issues.apache.org/jira/browse/YARN-9074 > Project: Hadoop YARN > Issue Type: Sub-task > Reporter: Zhaohui Xin > Assignee: Zhaohui Xin > Priority: Major > Attachments: image-2018-12-01-11-36-12-448.png, > image-2018-12-01-11-38-18-191.png > > > {code:java} > @Override > public void transition(ContainerImpl container, ContainerEvent event) { > container.setIsReInitializing(false); > // Set exit code to 0 on success > container.exitCode = 0; > // TODO: Add containerWorkDir to the deletion service. > if (DockerLinuxContainerRuntime.isDockerContainerRequested( > container.daemonConf, > container.getLaunchContext().getEnvironment())) { > removeDockerContainer(container); > } > if (clCleanupRequired) { > container.dispatcher.getEventHandler().handle( > new ContainersLauncherEvent(container, > ContainersLauncherEventType.CLEANUP_CONTAINER)); > } > container.cleanup(); > }{code} > Now, when container is finished, NM firstly execute "_docker rm xxx"_ to > remove it and this thread is placed in DeletionService. see more in YARN-5366 > . > Next, NM will execute "_docker stop_" and "docker kill" command. these tow > commands are wrapped up in ContainerCleanup thread and executed by > ContainersLauncher. see more in YARN-7644. > The above will cause the container's cleanup to be split into two threads. I > think we should refactor these code to make all docker container killing > process be place in ContainerCleanup thread and "_docker rm_" should be > executed last. -- This message was sent by Atlassian JIRA (v7.6.3#76005) --------------------------------------------------------------------- To unsubscribe, e-mail: yarn-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: yarn-issues-h...@hadoop.apache.org