[
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 to 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 this thread.
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 ContainerCleanup thread 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 this thread.
> 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 to 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 this thread.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]