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