[
https://issues.apache.org/jira/browse/YARN-10019?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16995003#comment-16995003
]
Peter Bacsko commented on YARN-10019:
-------------------------------------
[~szegedim] we only invoke {{_exit()}} in the child process to avoid any kind
of double cleanup. The parent still calls the normal {{exit()}}. This is
absolutely the standard and recommended way of exiting if eg. {{exec()}} fails
or the child just runs into an unrecoverable error after {{fork()}}.
_The standard library cleanup called at atexit functions may have different
meaning on different platforms_
{{atexit()}} is not used now and probably we'll never will, but why take the
risk of running it twice?
> container-executor: misc improvements in child processes and exec() calls
> -------------------------------------------------------------------------
>
> Key: YARN-10019
> URL: https://issues.apache.org/jira/browse/YARN-10019
> Project: Hadoop YARN
> Issue Type: Bug
> Components: nodemanager
> Reporter: Peter Bacsko
> Assignee: Peter Bacsko
> Priority: Major
> Attachments: YARN-10019-001.patch, YARN-10019-002.patch
>
>
> There are a couple of improvements that we can do in container-executor
> regarding how we exit from child processes and how we handle failed exec()
> calls:
> 1. If we're in the child code path and we detect an erroneous condition, the
> usual way is just simply call {{_exit()}}. Normal {{exit()}} occurs in the
> parent. Calling {{_exit()}} prevents flushing stdio buffers twice and any
> cleanup logic registered with {{atexit()}} or {{on_exit()}} will run only
> once.
> 2. There's code like {{if (execlp(script_file_dest, script_file_dest, NULL)
> != 0) ...}} which is not necessary. Exec functions are not supposed to
> return. If they do, it's definitely an error, so no need to check the return
> value.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]