[
https://issues.apache.org/jira/browse/MESOS-387?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Benjamin Mahler resolved MESOS-387.
-----------------------------------
Resolution: Fixed
> Command executor does not issue a killtree / killpg on the shell command.
> -------------------------------------------------------------------------
>
> Key: MESOS-387
> URL: https://issues.apache.org/jira/browse/MESOS-387
> Project: Mesos
> Issue Type: Bug
> Reporter: Benjamin Mahler
> Assignee: Benjamin Mahler
>
> This manifested from my new Isolator tests that are now testing the
> Isolators. Using the command executor to kill the task left an orphaned child
> process, since it only issues a kill to the parent pid.
> Relevant code in executor.cpp:
> virtual void killTask(ExecutorDriver* driver, const TaskID& taskId)
> {
> // TODO(benh): Do kill escalation (i.e., after n seconds, kill -9).
> if (pid > 0) {
> kill(pid, SIGTERM);
> }
> }
> virtual void shutdown(ExecutorDriver* driver)
> {
> // TODO(benh): Do kill escalation (i.e., after n seconds, kill -9).
> if (pid > 0) {
> kill(pid, SIGTERM);
> }
> }
> This is non-trivial to fix, since it's unclear with who the responsibility
> lies for kill escalation. With a shell invocation of:
> "top -b -d 0 -n 30000 2>&1 > /dev/null & sleep 60"
> The sleep command will be killed immediately and the executor appears to
> exit, so kill escalation in the slave will not occur AFAICT. Thus, the
> command executor needs to:
> 1. Issue killtree() and killpg() calls instead of direct kill() calls.
> 2. Perform kill escalation (as indicated in the benh TODO above).
--
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