Author: sms
Date: Tue Jul 21 17:03:04 2009
New Revision: 796382

URL: http://svn.apache.org/viewvc?rev=796382&view=rev
Log:
PIG-695: Pig should not fail when error logs cannot be created

Modified:
    hadoop/pig/trunk/CHANGES.txt
    hadoop/pig/trunk/src/org/apache/pig/Main.java
    hadoop/pig/trunk/src/org/apache/pig/backend/executionengine/PigSlicer.java
    
hadoop/pig/trunk/src/org/apache/pig/backend/hadoop/executionengine/mapReduceLayer/Launcher.java
    hadoop/pig/trunk/src/org/apache/pig/impl/util/LogUtils.java

Modified: hadoop/pig/trunk/CHANGES.txt
URL: 
http://svn.apache.org/viewvc/hadoop/pig/trunk/CHANGES.txt?rev=796382&r1=796381&r2=796382&view=diff
==============================================================================
--- hadoop/pig/trunk/CHANGES.txt (original)
+++ hadoop/pig/trunk/CHANGES.txt Tue Jul 21 17:03:04 2009
@@ -40,6 +40,8 @@
 
 BUG FIXES
 
+    PIG-695: Pig should not fail when error logs cannot be created (sms)
+
        PIG-878: Pig is returning too many blocks in the input split. (arunc 
via gates).
 
     PIG-888: Pig do not pass udf to the backend in some situation (daijy)

Modified: hadoop/pig/trunk/src/org/apache/pig/Main.java
URL: 
http://svn.apache.org/viewvc/hadoop/pig/trunk/src/org/apache/pig/Main.java?rev=796382&r1=796381&r2=796382&view=diff
==============================================================================
--- hadoop/pig/trunk/src/org/apache/pig/Main.java (original)
+++ hadoop/pig/trunk/src/org/apache/pig/Main.java Tue Jul 21 17:03:04 2009
@@ -76,6 +76,7 @@
     boolean verbose = false;
     boolean gruntCalled = false;
     String logFileName = null;
+    boolean userSpecifiedLog = false;
 
     try {
         BufferedReader pin = null;
@@ -199,7 +200,8 @@
                 } else {
                     logFileName = validateLogFile(logFileName, null);
                 }
-                properties.setProperty("pig.logfile", logFileName);
+                userSpecifiedLog = true;
+                properties.setProperty("pig.logfile", (logFileName == null? 
"": logFileName));
                 break;
 
             case 'm':
@@ -263,11 +265,15 @@
         // create the context with the parameter
         PigContext pigContext = new PigContext(execType, properties);
         
-        if(logFileName == null) {
+        if(logFileName == null && !userSpecifiedLog) {
             logFileName = validateLogFile(null, null);
         }
         
-        pigContext.getProperties().setProperty("pig.logfile", logFileName);
+        if(logFileName != null) {
+            log.info("Logging error messages to: " + logFileName);
+        }
+        
+        pigContext.getProperties().setProperty("pig.logfile", (logFileName == 
null? "": logFileName));
         
         if(optimizerRules.size() > 0) {
                pigContext.getProperties().setProperty("pig.optimizer.rules", 
ObjectSerializer.serialize(optimizerRules));
@@ -547,7 +553,7 @@
         System.out.println("    -m, -param_file path to the parameter file");
         System.out.println("    -o, -hod read hod server from system property 
ssh.gateway");
         System.out.println("    -p, -param key value pair of the form 
param=val");
-        System.out.println("    -r, -dryrun 
CmdLineParser.ValueExpected.NOT_ACCEPTED");
+        System.out.println("    -r, -dryrun");
         System.out.println("    -t, -optimizer_off optimizer rule name, turn 
optimizer off for this rule; use all to turn all rules off, optimizer is turned 
on by default");
         System.out.println("    -v, -verbose print all error messages to 
screen");
         System.out.println("    -w, -warning turn warning on; also turns 
warning aggregation off");
@@ -567,7 +573,8 @@
             try {
                 scriptFileAbsPath = scriptFile.getCanonicalPath();
             } catch (IOException ioe) {
-                throw new AssertionError("Could not compute canonical path to 
the script file " + ioe.getMessage());      
+                log.warn("Could not compute canonical path to the script file 
" + ioe.getMessage());
+                return null;
             }            
             strippedDownScriptName = 
getFileFromCanonicalPath(scriptFileAbsPath);
         }
@@ -586,11 +593,13 @@
                 try {
                     logFileName = logFile.getCanonicalPath() + File.separator 
+ defaultLogFileName;
                 } catch (IOException ioe) {
-                    throw new AssertionError("Could not compute canonical path 
to the log file " + ioe.getMessage());       
+                    log.warn("Could not compute canonical path to the log file 
" + ioe.getMessage());
+                    return null;
                 }
                 return logFileName;
             } else {
-                throw new AssertionError("Need write permission in the 
directory: " + logFileName + " to create log file.");
+                log.warn("Need write permission in the directory: " + 
logFileName + " to create log file.");
+                return null;
             }
         } else {
             //we have a relative path or an absolute path to the log file
@@ -601,13 +610,15 @@
                     try {
                         logFileName = new File(logFileName).getCanonicalPath();
                     } catch (IOException ioe) {
-                        throw new AssertionError("Could not compute canonical 
path to the log file " + ioe.getMessage());
+                        log.warn("Could not compute canonical path to the log 
file " + ioe.getMessage());
+                        return null;
                     }
                     return logFileName;
                 } else {
                     //do not have write permissions for the log file
                     //bail out with an error message
-                    throw new AssertionError("Cannot write to file: " + 
logFileName + ". Need write permission.");
+                    log.warn("Cannot write to file: " + logFileName + ". Need 
write permission.");
+                    return logFileName;
                 }
             } else {
                 logFile = logFile.getParentFile();
@@ -618,11 +629,13 @@
                         try {
                             logFileName = new 
File(logFileName).getCanonicalPath();
                         } catch (IOException ioe) {
-                            throw new AssertionError("Could not compute 
canonical path to the log file " + ioe.getMessage());
+                            log.warn("Could not compute canonical path to the 
log file " + ioe.getMessage());
+                            return null;
                         }
                         return logFileName;
                     } else {
-                        throw new AssertionError("Need write permission in the 
directory: " + logFile + " to create log file.");
+                        log.warn("Need write permission in the directory: " + 
logFile + " to create log file.");
+                        return logFileName;
                     }
                 }//end if logFile != null else is the default in fall through  
              
             }//end else part of logFile.exists()
@@ -637,7 +650,8 @@
     if(logFile.canWrite()) {        
         return logFileName;
     }    
-    throw new RuntimeException("Cannot write to log file: " + logFileName);
+    log.warn("Cannot write to log file: " + logFileName);
+    return null;
 }
 
 private static String getFileFromCanonicalPath(String canonicalPath) {

Modified: 
hadoop/pig/trunk/src/org/apache/pig/backend/executionengine/PigSlicer.java
URL: 
http://svn.apache.org/viewvc/hadoop/pig/trunk/src/org/apache/pig/backend/executionengine/PigSlicer.java?rev=796382&r1=796381&r2=796382&view=diff
==============================================================================
--- hadoop/pig/trunk/src/org/apache/pig/backend/executionengine/PigSlicer.java 
(original)
+++ hadoop/pig/trunk/src/org/apache/pig/backend/executionengine/PigSlicer.java 
Tue Jul 21 17:03:04 2009
@@ -82,7 +82,7 @@
                 }
             } catch (Exception e) {
                 int errCode = 2099;
-                String msg = "Problem in constructing slices.";
+                String msg = "Problem in constructing slices: " + 
e.getMessage();
                 throw new ExecException(msg, errCode, PigException.BUG, e);
             }
             Map<String, Object> stats = fullPath.getStatistics();

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=796382&r1=796381&r2=796382&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
 Tue Jul 21 17:03:04 2009
@@ -489,7 +489,7 @@
                        }                                               
                } else { //else for if(object instanceof PigException)
                        //its not PigException; create the exception with the 
message
-                       object = 
PigContext.instantiateFuncFromSpec(exceptionName + "(" + exceptionMessage + 
")");
+                       object = PigContext.instantiateFuncFromSpec(new 
FuncSpec(exceptionName, exceptionMessage));
                }
                
                StackTraceElement[] steArr = new 
StackTraceElement[stackTraceElements.size()];

Modified: hadoop/pig/trunk/src/org/apache/pig/impl/util/LogUtils.java
URL: 
http://svn.apache.org/viewvc/hadoop/pig/trunk/src/org/apache/pig/impl/util/LogUtils.java?rev=796382&r1=796381&r2=796382&view=diff
==============================================================================
--- hadoop/pig/trunk/src/org/apache/pig/impl/util/LogUtils.java (original)
+++ hadoop/pig/trunk/src/org/apache/pig/impl/util/LogUtils.java Tue Jul 21 
17:03:04 2009
@@ -119,7 +119,7 @@
             log.error(bs.toString());
         }
         
-        if(logFileName == null) {
+        if(logFileName == null || logFileName.equals("")) {
             //if exec is invoked programmatically then logFileName will be null
             log.warn("There is no log file to write to.");
             log.error(bs.toString());
@@ -163,10 +163,10 @@
     }
     
     public static void writeLog(String headerMessage, String message, String 
logFileName, Log log) {
-        if(logFileName == null) {
+        if(logFileName == null || logFileName.equals("")) {
             //if exec is invoked programmatically then logFileName will be null
             log.warn("There is no log file to write to.");
-            log.error(message);
+            log.error(headerMessage + "\n" + message);
             return;
         }
         


Reply via email to