[
https://issues.apache.org/jira/browse/YARN-76?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13710816#comment-13710816
]
Xuan Gong commented on YARN-76:
-------------------------------
{code}
public static String[] getSignalKillCommand(int code, String pid) {
return Shell.WINDOWS ? new String[] { Shell.WINUTILS, "task", "kill", pid }
:
new String[] { "kill", "-" + code, isSetsidAvailable ? "-" + pid : pid };
}
{code}
If setSid is supported, the command kill -15/-9 -{$pid} will be executed. This
will kill the whole process group.
If setSid is not supported, the command kill -15/-9 $pid will be executed.
> killApplication doesn't fully kill application master on Mac OS
> ---------------------------------------------------------------
>
> Key: YARN-76
> URL: https://issues.apache.org/jira/browse/YARN-76
> Project: Hadoop YARN
> Issue Type: Bug
> Environment: Failed on MacOS. OK on Linux
> Reporter: Bo Wang
>
> When client sends a ClientRMProtocol#killApplication to RM, the corresponding
> AM is supposed to be killed. However, on Mac OS, the AM is still alive (w/o
> any interruption).
> I figured out part of the reason after some debugging. NM starts a AM with
> command like "/bin/bash -c /path/to/java SampleAM". This command is executed
> in a process (say with PID 0001), which starts another Java process (say with
> PID 0002). When NM kills the AM, it send SIGTERM and then SIGKILL to the bash
> process (PID 0001). In Linux, the death of the bash process (PID 0001) will
> trigger the kill of the Java process (PID 0002). However, in Mac OS, only the
> bash process is killed. The Java process is in the wild since then.
> Note: on Mac OS, DefaultContainerExecutor is used rather than
> LinuxContainerExecutor.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira