You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pig.apache.org by rd...@apache.org on 2010/09/04 00:48:58 UTC
svn commit: r992500 - in /hadoop/pig/branches/branch-0.8: CHANGES.txt
src/org/apache/pig/backend/hadoop/executionengine/mapReduceLayer/Launcher.java
Author: rding
Date: Fri Sep 3 22:48:57 2010
New Revision: 992500
URL: http://svn.apache.org/viewvc?rev=992500&view=rev
Log:
PIG-1599: pig gives generic message for few cases
Modified:
hadoop/pig/branches/branch-0.8/CHANGES.txt
hadoop/pig/branches/branch-0.8/src/org/apache/pig/backend/hadoop/executionengine/mapReduceLayer/Launcher.java
Modified: hadoop/pig/branches/branch-0.8/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/pig/branches/branch-0.8/CHANGES.txt?rev=992500&r1=992499&r2=992500&view=diff
==============================================================================
--- hadoop/pig/branches/branch-0.8/CHANGES.txt (original)
+++ hadoop/pig/branches/branch-0.8/CHANGES.txt Fri Sep 3 22:48:57 2010
@@ -185,6 +185,8 @@ PIG-1309: Map-side Cogroup (ashutoshc)
BUG FIXES
+PIG-1599: pig gives generic message for few cases (nrai via rding)
+
PIG-1595: casting relation to scalar- problem with handling of data from non PigStorage loaders (thejas)
PIG-1591: pig does not create a log file, if tje MR job succeeds but front end fails (nrai via daijy)
Modified: hadoop/pig/branches/branch-0.8/src/org/apache/pig/backend/hadoop/executionengine/mapReduceLayer/Launcher.java
URL: http://svn.apache.org/viewvc/hadoop/pig/branches/branch-0.8/src/org/apache/pig/backend/hadoop/executionengine/mapReduceLayer/Launcher.java?rev=992500&r1=992499&r2=992500&view=diff
==============================================================================
--- hadoop/pig/branches/branch-0.8/src/org/apache/pig/backend/hadoop/executionengine/mapReduceLayer/Launcher.java (original)
+++ hadoop/pig/branches/branch-0.8/src/org/apache/pig/backend/hadoop/executionengine/mapReduceLayer/Launcher.java Fri Sep 3 22:48:57 2010
@@ -178,45 +178,54 @@ public abstract class Launcher {
for (int i = 0; i < reports.length; i++) {
String msgs[] = reports[i].getDiagnostics();
ArrayList<Exception> exceptions = new ArrayList<Exception>();
- Set<String> errorMessageSet = new HashSet<String>();
String exceptionCreateFailMsg = null;
- for (int j = 0; j < msgs.length; j++) {
- if(!errorMessageSet.contains(msgs[j])) {
- errorMessageSet.add(msgs[j]);
- if (errNotDbg) {
- //errNotDbg is used only for failed jobs
- //keep track of all the unique exceptions
- try {
- LogUtils.writeLog("Backend error message", msgs[j],
- pigContext.getProperties().getProperty("pig.logfile"),
- log);
- Exception e = getExceptionFromString(msgs[j]);
- exceptions.add(e);
- } catch (Exception e1) {
- // keep track of the exception we were unable to re-create
- String firstLine = getFirstLineFromMessage(msgs[j]);
- exceptionCreateFailMsg = firstLine;
+ boolean jobFailed = false;
+ float successfulProgress = 1.0f;
+ if (msgs.length > 0) {
+ //if the progress reported is not 1.0f then the map or reduce job failed
+ //this comparison is in place till Hadoop 0.20 provides methods to query
+ //job status
+ if(reports[i].getProgress() != successfulProgress) {
+ jobFailed = true;
+ }
+ Set<String> errorMessageSet = new HashSet<String>();
+ for (int j = 0; j < msgs.length; j++) {
+ if(!errorMessageSet.contains(msgs[j])) {
+ errorMessageSet.add(msgs[j]);
+ if (errNotDbg) {
+ //errNotDbg is used only for failed jobs
+ //keep track of all the unique exceptions
+ try {
+ LogUtils.writeLog("Backend error message", msgs[j],
+ pigContext.getProperties().getProperty("pig.logfile"),
+ log);
+ Exception e = getExceptionFromString(msgs[j]);
+ exceptions.add(e);
+ } catch (Exception e1) {
+ // keep track of the exception we were unable to re-create
+ String firstLine = getFirstLineFromMessage(msgs[j]);
+ exceptionCreateFailMsg = firstLine;
+
+ }
+ } else {
+ log.debug("Error message from task (" + type + ") " +
+ reports[i].getTaskID() + msgs[j]);
}
- } else {
- log.debug("Error message from task (" + type + ") " +
- reports[i].getTaskID() + msgs[j]);
}
}
- }
-
+ }
//if there are no valid exception that could be created, report
- if(exceptions.size() == 0){
- int errCode = 2997;
- String msg = "Unable to recreate exception from backed error: "
- + exceptionCreateFailMsg;
- throw new ExecException(msg, errCode, PigException.BUG);
+ if((exceptions.size() == 0) && (exceptionCreateFailMsg != null)){
+ int errCode = 2997;
+ String msg = "Unable to recreate exception from backed error: "+exceptionCreateFailMsg;
+ throw new ExecException(msg, errCode, PigException.BUG);
}
-
+
//if its a failed job then check if there is more than one exception
//more than one exception implies possibly different kinds of failures
//log all the different failures and throw the exception corresponding
//to the first failure
- if (errNotDbg) {
+ if(jobFailed) {
if(exceptions.size() > 1) {
for(int j = 0; j < exceptions.size(); ++j) {
String headerMessage = "Error message from task (" + type + ") " + reports[i].getTaskID();
@@ -231,7 +240,7 @@ public abstract class Launcher {
throw new ExecException(msg, errCode, PigException.BUG);
}
}
- }
+ }
}
/**
@@ -575,3 +584,4 @@ public abstract class Launcher {
}
}
+