Embedded pig in python; invoking sys.exit(0) causes script failure
------------------------------------------------------------------
Key: PIG-2559
URL: https://issues.apache.org/jira/browse/PIG-2559
Project: Pig
Issue Type: Bug
Affects Versions: 0.9.1, 0.10
Reporter: Vivek Padmanabhan
In embedded pig in python, if I have a sys.exit (0) the script always fails and
returns exit code as 6.
While it is agreeable that Pig will reinterpret the exit code from Python,
sys.exit(0) should be considered as a normal termination.
A sample code;
{code}
#!/usr/bin/python
from org.apache.pig.scripting import Pig
import sys
if 1 == 2:
sys.exit(1)
else:
sys.exit(0)
{code}
Exception from Pig
{code}
org.apache.pig.backend.executionengine.ExecException: ERROR 1121: Python Error.
Traceback (most recent call last):
File "a.py", line 9, in <module>
sys.exit(0)
SystemExit: 0
at
org.apache.pig.scripting.jython.JythonScriptEngine$Interpreter.execfile(JythonScriptEngine.java:107)
at
org.apache.pig.scripting.jython.JythonScriptEngine.load(JythonScriptEngine.java:210)
at
org.apache.pig.scripting.jython.JythonScriptEngine.main(JythonScriptEngine.java:202)
at org.apache.pig.scripting.ScriptEngine.run(ScriptEngine.java:275)
at org.apache.pig.Main.runEmbeddedScript(Main.java:925)
at org.apache.pig.Main.run(Main.java:516)
at org.apache.pig.Main.main(Main.java:111)
Caused by: Traceback (most recent call last):
File "a.py", line 9, in <module>
sys.exit(0)
SystemExit: 0
at org.python.core.PyException.fillInStackTrace(PyException.java:70)
at java.lang.Throwable.<init>(Throwable.java:181)
at java.lang.Exception.<init>(Exception.java:29)
at java.lang.RuntimeException.<init>(RuntimeException.java:32)
at org.python.core.PyException.<init>(PyException.java:46)
at org.python.core.PyException.<init>(PyException.java:43)
at org.python.core.PySystemState.exit(PySystemState.java:1206)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at
org.python.core.PyReflectedFunction.__call__(PyReflectedFunction.java:175)
at org.python.core.PyObject.__call__(PyObject.java:355)
at org.python.core.PyMethod.__call__(PyMethod.java:215)
at org.python.core.PyMethod.instancemethod___call__(PyMethod.java:221)
at org.python.core.PyMethod.__call__(PyMethod.java:206)
at org.python.core.PyObject.__call__(PyObject.java:397)
at org.python.core.PyObject.__call__(PyObject.java:401)
at org.python.pycode._pyx0.f$0(a.py:9)
at org.python.pycode._pyx0.call_function(a.py)
at org.python.core.PyTableCode.call(PyTableCode.java:165)
at org.python.core.PyCode.call(PyCode.java:18)
at org.python.core.Py.runCode(Py.java:1197)
at
org.python.util.PythonInterpreter.execfile(PythonInterpreter.java:166)
at
org.apache.pig.scripting.jython.JythonScriptEngine$Interpreter.execfile(JythonScriptEngine.java:104)
... 6 more
{code}
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira