You are viewing a plain text version of this content. The canonical link for it is here.
Posted to yarn-issues@hadoop.apache.org by "Zhaohui Xin (JIRA)" <ji...@apache.org> on 2018/11/30 16:39:00 UTC

[jira] [Comment Edited] (YARN-9074) Docker container rm command should be executed after stop

    [ https://issues.apache.org/jira/browse/YARN-9074?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16704995#comment-16704995 ] 

Zhaohui Xin edited comment on YARN-9074 at 11/30/18 4:38 PM:
-------------------------------------------------------------

[~ebadger], [~shanekumpf@gmail.com]. In my opinion, if we want to debug, we can just rerun the docker command manually, because all container working dirs will be reserved if we set delete-delay. So we don't need to keep these containers after they finished.

 
On the contrary, in most cases, if we don't need debug, it would be unreasonable to remove container firstly and then stop container.


was (Author: uranus):
[~ebadger], [~shanekumpf@gmail.com]. In my opinion, if we want to debug, we can just rerun the docker command manually, because all container working dirs will be reserved if we set delete-delay. So we don't need to keep these containers after they finished.

> 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
>
> {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-unsubscribe@hadoop.apache.org
For additional commands, e-mail: yarn-issues-help@hadoop.apache.org