Author: sms
Date: Fri Feb 13 05:18:02 2009
New Revision: 743989

URL: http://svn.apache.org/viewvc?rev=743989&view=rev
Log:
PIG-590: error handling on the backend

Modified:
    hadoop/pig/trunk/CHANGES.txt
    
hadoop/pig/trunk/src/org/apache/pig/backend/hadoop/executionengine/mapReduceLayer/Launcher.java
    
hadoop/pig/trunk/src/org/apache/pig/backend/hadoop/executionengine/physicalLayer/expressionOperators/POUserFunc.java
    hadoop/pig/trunk/src/org/apache/pig/tools/grunt/Utils.java

Modified: hadoop/pig/trunk/CHANGES.txt
URL: 
http://svn.apache.org/viewvc/hadoop/pig/trunk/CHANGES.txt?rev=743989&r1=743988&r2=743989&view=diff
==============================================================================
--- hadoop/pig/trunk/CHANGES.txt (original)
+++ hadoop/pig/trunk/CHANGES.txt Fri Feb 13 05:18:02 2009
@@ -422,3 +422,5 @@
 
     PIG-590: error handling on the backend (sms via olgan)
 
+    PIG-590: error handling on the backend (sms)
+

Modified: 
hadoop/pig/trunk/src/org/apache/pig/backend/hadoop/executionengine/mapReduceLayer/Launcher.java
URL: 
http://svn.apache.org/viewvc/hadoop/pig/trunk/src/org/apache/pig/backend/hadoop/executionengine/mapReduceLayer/Launcher.java?rev=743989&r1=743988&r2=743989&view=diff
==============================================================================
--- 
hadoop/pig/trunk/src/org/apache/pig/backend/hadoop/executionengine/mapReduceLayer/Launcher.java
 (original)
+++ 
hadoop/pig/trunk/src/org/apache/pig/backend/hadoop/executionengine/mapReduceLayer/Launcher.java
 Fri Feb 13 05:18:02 2009
@@ -251,6 +251,7 @@
         return totalHadoopTimeSpent;
     }
 
+
     /**
      * 
      * @param stackTraceLine The string representation of {...@link 
Throwable#printStackTrace() printStackTrace}
@@ -343,8 +344,10 @@
                 String stackElementRegex = 
"\\s+at\\s+(\\w+(\\$\\w+)?\\.)+(\\<)?\\w+(\\>)?";
                 Pattern stackElementPattern = 
Pattern.compile(stackElementRegex);
                 String pigExceptionRegex = "org\\.apache\\.pig\\.";
-                Pattern pigExceptionPattern = 
Pattern.compile(pigExceptionRegex);                
-
+                Pattern pigExceptionPattern = 
Pattern.compile(pigExceptionRegex);              
+                String moreElementRegex = "\\s+\\.\\.\\.\\s+\\d+\\s+more";
+                Pattern moreElementPattern = Pattern.compile(moreElementRegex);
+                
                 
                 String pigPackageRegex = "org.apache.pig";
                 
@@ -361,6 +364,10 @@
                             pigException = true;
                         }                       
                     } else {
+                        Matcher moreElementMatcher = 
moreElementPattern.matcher(stackTraceLines[lineNum]);
+                        if(moreElementMatcher.find()) {
+                            ++lineNum;
+                        }
                         break;
                     }
                 }
@@ -515,6 +522,6 @@
             lineNumber = Integer.parseInt(items[1]);
         }
         return new StackTraceElement(declaringClass, methodName, fileName, 
lineNumber);
-    }    
+    }  
 
 }

Modified: 
hadoop/pig/trunk/src/org/apache/pig/backend/hadoop/executionengine/physicalLayer/expressionOperators/POUserFunc.java
URL: 
http://svn.apache.org/viewvc/hadoop/pig/trunk/src/org/apache/pig/backend/hadoop/executionengine/physicalLayer/expressionOperators/POUserFunc.java?rev=743989&r1=743988&r2=743989&view=diff
==============================================================================
--- 
hadoop/pig/trunk/src/org/apache/pig/backend/hadoop/executionengine/physicalLayer/expressionOperators/POUserFunc.java
 (original)
+++ 
hadoop/pig/trunk/src/org/apache/pig/backend/hadoop/executionengine/physicalLayer/expressionOperators/POUserFunc.java
 Fri Feb 13 05:18:02 2009
@@ -197,8 +197,21 @@
                    throw ee;
                } catch (IOException ioe) {
                    int errCode = 2078;
-                   String msg = "Caught error from UDF: " + 
funcSpec.getClassName() + 
-            "[" + ioe.getMessage() + "]";
+                   String msg = "Caught error from UDF: " + 
funcSpec.getClassName(); 
+            String footer = " [" + ioe.getMessage() + "]";
+                   
+                   if(ioe instanceof PigException) {
+                       int udfErrorCode = ((PigException)ioe).getErrorCode();
+                       if(udfErrorCode != 0) {
+                           errCode = udfErrorCode;
+                           msg = ((PigException)ioe).getMessage();
+                       } else {
+                           msg += " [" + ((PigException)ioe).getMessage() + " 
]";
+                       }
+                   } else {
+                       msg += footer;
+                   }
+                   
                        throw new ExecException(msg, errCode, PigException.BUG, 
ioe);
                }
        }

Modified: hadoop/pig/trunk/src/org/apache/pig/tools/grunt/Utils.java
URL: 
http://svn.apache.org/viewvc/hadoop/pig/trunk/src/org/apache/pig/tools/grunt/Utils.java?rev=743989&r1=743988&r2=743989&view=diff
==============================================================================
--- hadoop/pig/trunk/src/org/apache/pig/tools/grunt/Utils.java (original)
+++ hadoop/pig/trunk/src/org/apache/pig/tools/grunt/Utils.java Fri Feb 13 
05:18:02 2009
@@ -44,7 +44,7 @@
 
         while (current != null && current.getCause() != null){
             current = current.getCause();
-            if(current instanceof PigException) {
+            if((current instanceof PigException) && 
(((PigException)current).getErrorCode() != 0)) {
                 pigException = current;
             }
         }


Reply via email to