[ 
https://issues.apache.org/jira/browse/HADOOP-2344?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12549312
 ] 

Amar Kamat commented on HADOOP-2344:
------------------------------------

This patch now merges the functionalities of {{ShellCommand}} and 
{{ShellUtil}}. I have deprecated {{ShellUtil}}. Now one can use 
{{ShellCommand}} in the following ways
* use {{ShellCommand.ShellCommandExecutor}} to simply execute a command
* extend {{ShellCommand}} to do some advance level output parsing

Basically use {{ShellCommandExecutor}}
* if the expected output is small and the requirement is to simply execute the 
command  

Extending {{ShellCommand}} might be useful in cases where there is a need to 
control 
* input directories
* command
* shell environment

Regarding the "Process.waitFor() hangs" issue, this patch clears the error 
stream using a separate thread while the input stream is read in the current 
thread (so that they happen in parallel). Once the streams are cleared, 
{{ShellCommand}} waits for the process to terminate and come out of 
{{waitFor()}}. Finally the process is destroyed closing the input/error 
streams. As done in {{ShellUtil}}, the process is made accessible outside 
{{ShellCommand}} so that the process can be externally terminated.

> Free up the buffers (input and error) while executing a shell command before 
> waiting for it to finish.
> ------------------------------------------------------------------------------------------------------
>
>                 Key: HADOOP-2344
>                 URL: https://issues.apache.org/jira/browse/HADOOP-2344
>             Project: Hadoop
>          Issue Type: Bug
>    Affects Versions: 0.15.2
>            Reporter: Amar Kamat
>            Assignee: Amar Kamat
>             Fix For: 0.15.2
>
>         Attachments: HADOOP-2231.patch, HADOOP-2344.patch
>
>
> Process.waitFor() should be invoked after freeing up the input and error 
> stream.  While fixing https://issues.apache.org/jira/browse/HADOOP-2231 we 
> found that this might be a possible cause.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to