You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pig.apache.org by da...@apache.org on 2012/03/01 23:58:40 UTC
svn commit: r1295967 - in /pig/trunk: CHANGES.txt
src/org/apache/pig/scripting/jython/JythonScriptEngine.java
test/org/apache/pig/test/TestScriptLanguage.java
Author: daijy
Date: Thu Mar 1 22:58:40 2012
New Revision: 1295967
URL: http://svn.apache.org/viewvc?rev=1295967&view=rev
Log:
PIG-2559: Embedded pig in python; invoking sys.exit(0) causes script failure
Modified:
pig/trunk/CHANGES.txt
pig/trunk/src/org/apache/pig/scripting/jython/JythonScriptEngine.java
pig/trunk/test/org/apache/pig/test/TestScriptLanguage.java
Modified: pig/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/pig/trunk/CHANGES.txt?rev=1295967&r1=1295966&r2=1295967&view=diff
==============================================================================
--- pig/trunk/CHANGES.txt (original)
+++ pig/trunk/CHANGES.txt Thu Mar 1 22:58:40 2012
@@ -265,6 +265,8 @@ PIG-2228: support partial aggregation in
BUG FIXES
+PIG-2559: Embedded pig in python; invoking sys.exit(0) causes script failure (vivekp via daijy)
+
PIG-2530: Reusing alias name in nested foreach causes incorrect results (daijy)
PIG-2489: Input Path Globbing{} not working with PigStorageSchema or PigStorage('\t', '-schema') (daijy)
Modified: pig/trunk/src/org/apache/pig/scripting/jython/JythonScriptEngine.java
URL: http://svn.apache.org/viewvc/pig/trunk/src/org/apache/pig/scripting/jython/JythonScriptEngine.java?rev=1295967&r1=1295966&r2=1295967&view=diff
==============================================================================
--- pig/trunk/src/org/apache/pig/scripting/jython/JythonScriptEngine.java (original)
+++ pig/trunk/src/org/apache/pig/scripting/jython/JythonScriptEngine.java Thu Mar 1 22:58:40 2012
@@ -44,6 +44,7 @@ import org.python.core.Py;
import org.python.core.PyException;
import org.python.core.PyFrame;
import org.python.core.PyFunction;
+import org.python.core.PyInteger;
import org.python.core.PyJavaPackage;
import org.python.core.PyObject;
import org.python.core.PyString;
@@ -194,6 +195,16 @@ public class JythonScriptEngine extends
}
}
} catch (PyException e) {
+ if (e.match(Py.SystemExit)) {
+ PyObject value = e.value;
+ if (PyException.isExceptionInstance(e.value)) {
+ value = value.__findattr__("code");
+ }
+ if (new PyInteger(0).equals(value)) {
+ LOG.info("Script invoked sys.exit(0)");
+ return;
+ }
+ }
String message = "Python Error. " + e;
throw new ExecException(message, 1121, e);
}
Modified: pig/trunk/test/org/apache/pig/test/TestScriptLanguage.java
URL: http://svn.apache.org/viewvc/pig/trunk/test/org/apache/pig/test/TestScriptLanguage.java?rev=1295967&r1=1295966&r2=1295967&view=diff
==============================================================================
--- pig/trunk/test/org/apache/pig/test/TestScriptLanguage.java (original)
+++ pig/trunk/test/org/apache/pig/test/TestScriptLanguage.java Thu Mar 1 22:58:40 2012
@@ -654,5 +654,23 @@ public class TestScriptLanguage {
PigStats stats = it.next().get(0);
assertTrue(stats.isSuccessful());
}
+
+ @Test
+ public void testPyShouldNotFailScriptIfExitCodeIs0() throws Exception {
+ String[] script = {
+ "#!/usr/bin/python",
+ "from org.apache.pig.scripting import *",
+ "import sys",
+ "if 1 == 2:",
+ " sys.exit(1)",
+ "else: sys.exit(0)"
+ };
+
+ Util.createLocalInputFile( "testScript.py", script);
+ ScriptEngine scriptEngine = ScriptEngine.getInstance("jython");
+ Map<String, List<PigStats>> statsMap = scriptEngine.run(pigServer.getPigContext(), "testScript.py");
+ assertEquals(0, statsMap.size());
+
+ }
}