[ 
https://issues.apache.org/jira/browse/HADOOP-18327?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

groot updated HADOOP-18327:
---------------------------
    Description: 
Need to fix the eval expression.

1. 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.

2. We can replace single quote with escape-char and a double quote.

 

 

  was:
Need to fix the eval expression.

1. 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.

2. We can replace single quote with escape-char and a double quote.

 

 HADOOP_OPTS can contain -XX:OnOutOfMemoryError='kill -9 %p', this leads to 
following invalid eval expression - eval $HADOOP_OPTS='foo_bar 
-XX:OnOutOfMemoryError='kill -9 %p''

 


> Fix eval expression in hadoop-functions.sh
> ------------------------------------------
>
>                 Key: HADOOP-18327
>                 URL: https://issues.apache.org/jira/browse/HADOOP-18327
>             Project: Hadoop Common
>          Issue Type: Bug
>    Affects Versions: 3.3.3
>            Reporter: groot
>            Assignee: groot
>            Priority: Minor
>              Labels: pull-request-available
>          Time Spent: 1h
>  Remaining Estimate: 0h
>
> Need to fix the eval expression.
> 1. 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.
> 2. We can replace single quote with escape-char and a double quote.
>  
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to