You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@pig.apache.org by "Anastasis Andronidis (JIRA)" <ji...@apache.org> on 2013/10/14 14:40:42 UTC

[jira] [Created] (PIG-3515) Shell commands are limited from OS buffer

Anastasis Andronidis created PIG-3515:
-----------------------------------------

             Summary: Shell commands are limited from OS buffer
                 Key: PIG-3515
                 URL: https://issues.apache.org/jira/browse/PIG-3515
             Project: Pig
          Issue Type: Bug
          Components: parser
    Affects Versions: 0.11.1
         Environment: Centos 6.5, Mac OS X 10.8.5
            Reporter: Anastasis Andronidis


Executing shell commands in pig scripts, may stuck due to Java buffer limitations.

Example:
%declare VAR   `cat 100kbytes.txt`

Produce:
2013-10-09 15:25:56,825 [main] INFO  org.apache.pig.tools.parameters.PreprocessorContext - Executing command : cat 100kbytes.txt

The execution hungs, so you have to interrupt the program.

^C
2013-10-09 15:26:10,066 [main] ERROR org.apache.pig.Main - ERROR 2999: Unexpected internal error. Error executing shell command: cat 100kbytes.txt. Command exit with exit code of 130

Explanation:
The problem lies in org.apache.pig.tools.parameters.PreprocessorContext#executeShellCommand method, line: 191 (trunk, at revision 1531874).

We wait for the process to complete before we get all the output, but the process waits for an indefinite amount of time, due to the fact that there is no space left in the buffer and the output can't be delivered.

References:
[1] http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html?page=2
[2] http://vyvaks.wordpress.com/2006/05/27/does-runtimeexec-hangs-in-java/

Solution:
I attach a test case that illustrates the problem and a patch as a solution. I would really like some comments.



--
This message was sent by Atlassian JIRA
(v6.1#6144)