[
https://issues.apache.org/jira/browse/HADOOP-15585?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
ASF GitHub Bot updated HADOOP-15585:
------------------------------------
Labels: bash pull-request-available shell-script (was: bash shell-script)
> Fix spaces in HADOOP_OPTS arguments
> -----------------------------------
>
> Key: HADOOP-15585
> URL: https://issues.apache.org/jira/browse/HADOOP-15585
> Project: Hadoop Common
> Issue Type: Improvement
> Components: scripts
> Affects Versions: 3.0.3
> Reporter: Brandon Scheller
> Priority: Major
> Labels: bash, pull-request-available, shell-script
>
> Prefix exec by eval in Hadoop bin scripts
> Prior to this change, if HADOOP_OPTS contains any arguments that include a
> space, the command is not parsed correctly. For example, if
> HADOOP_OPTS="... -XX:OnOutOfMemoryError=\"kill -9 %p\" ...", the bin/hadoop
> script will fail with the error "Unrecognized option: -9". No amount of clever
> escaping of the quotes or spaces in the "kill -9 %p" command will fix this.
> The only alternative appears to be to use 'eval'. Switching to use 'eval'
> *instead of* 'exec' also works, but it results in an intermediate bash process
> being left alive throughout the entire lifetime of the Java proces being
> started. Using 'exec' prefixed by 'eval' as has been done in this commit gets
> the best of both worlds, in that options with spaces are parsed correctly, and
> you don't end up with an intermediate bash process as the parent of the Java
> process.
> This is the exact approach that has been taken with Tomcat as well. See:
> http://tomcat.10.x6.nabble.com/Using-eval-vs-exec-in-shell-scripts-td2193116.html
> https://github.com/apache/tomcat/commit/3445dc3dba7b15f2fff27faef77003215f62e49a
> https://github.com/apache/tomcat/commit/83c0aea60f331eb632dcea8e9919d234903e06d1
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]