You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@oozie.apache.org by vi...@apache.org on 2013/04/17 01:04:01 UTC

svn commit: r1468659 - in /oozie/trunk: ./ core/src/main/java/org/apache/oozie/action/hadoop/ sharelib/hive/src/main/java/org/apache/oozie/action/hadoop/ sharelib/hive/src/test/java/org/apache/oozie/action/hadoop/ webapp/src/main/webapp/

Author: virag
Date: Tue Apr 16 23:04:00 2013
New Revision: 1468659

URL: http://svn.apache.org/r1468659
Log:
OOZIE-1281  Hiveaction should populate externalChildIDs (rohini via virag)

Modified:
    oozie/trunk/core/src/main/java/org/apache/oozie/action/hadoop/HiveActionExecutor.java
    oozie/trunk/release-log.txt
    oozie/trunk/sharelib/hive/src/main/java/org/apache/oozie/action/hadoop/HiveMain.java
    oozie/trunk/sharelib/hive/src/test/java/org/apache/oozie/action/hadoop/TestHiveActionExecutor.java
    oozie/trunk/webapp/src/main/webapp/oozie-console.js

Modified: oozie/trunk/core/src/main/java/org/apache/oozie/action/hadoop/HiveActionExecutor.java
URL: http://svn.apache.org/viewvc/oozie/trunk/core/src/main/java/org/apache/oozie/action/hadoop/HiveActionExecutor.java?rev=1468659&r1=1468658&r2=1468659&view=diff
==============================================================================
--- oozie/trunk/core/src/main/java/org/apache/oozie/action/hadoop/HiveActionExecutor.java (original)
+++ oozie/trunk/core/src/main/java/org/apache/oozie/action/hadoop/HiveActionExecutor.java Tue Apr 16 23:04:00 2013
@@ -19,13 +19,24 @@ package org.apache.oozie.action.hadoop;
 
 import static org.apache.oozie.action.hadoop.LauncherMapper.CONF_OOZIE_ACTION_MAIN_CLASS;
 
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.StringReader;
+import java.net.URISyntaxException;
 import java.util.List;
+import java.util.Properties;
 
 import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.fs.Path;
+import org.apache.hadoop.mapred.RunningJob;
 import org.apache.oozie.action.ActionExecutorException;
 import org.apache.oozie.client.WorkflowAction;
 import org.apache.oozie.client.XOozieClient;
+import org.apache.oozie.service.HadoopAccessorException;
+import org.apache.oozie.util.IOUtils;
 import org.jdom.Element;
 import org.jdom.JDOMException;
 import org.jdom.Namespace;
@@ -80,6 +91,32 @@ public class HiveActionExecutor extends 
         return true;
     }
 
+    @Override
+    protected void getActionData(FileSystem actionFs, RunningJob runningJob, WorkflowAction action, Context context)
+            throws HadoopAccessorException, JDOMException, IOException, URISyntaxException {
+        super.getActionData(actionFs, runningJob, action, context);
+
+        // Load stored Hadoop jobs ids and promote them as external child ids on job success
+        Properties props = new Properties();
+        props.load(new StringReader(action.getData()));
+        context.setExternalChildIDs((String) props.get(LauncherMain.HADOOP_JOBS));
+    }
+
+    @Override
+    protected void setActionCompletionData(Context context, FileSystem actionFs) throws IOException,
+            HadoopAccessorException, URISyntaxException {
+        super.setActionCompletionData(context, actionFs);
+
+        // Load stored Hadoop jobs ids and promote them as external child ids on job failure
+        Path externalChildIDs = LauncherMapper.getExternalChildIDsDataPath(context.getActionDir());
+        if (actionFs.exists(externalChildIDs)) {
+            InputStream is = actionFs.open(externalChildIDs);
+            BufferedReader reader = new BufferedReader(new InputStreamReader(is));
+            context.setExternalChildIDs(IOUtils.getReaderAsString(reader, -1));
+            reader.close();
+        }
+    }
+
     /**
      * Return the sharelib name for the action.
      *

Modified: oozie/trunk/release-log.txt
URL: http://svn.apache.org/viewvc/oozie/trunk/release-log.txt?rev=1468659&r1=1468658&r2=1468659&view=diff
==============================================================================
--- oozie/trunk/release-log.txt (original)
+++ oozie/trunk/release-log.txt Tue Apr 16 23:04:00 2013
@@ -1,5 +1,6 @@
 -- Oozie 4.1.0 release (trunk - unreleased)
 
+OOZIE-1281  Hiveaction should populate externalChildIDs (rohini via virag)
 OOZIE-1322 show child job URL tab selectively for pig action (ryota via mona)
 OOZIE-1307 Cover package org.apache.oozie.action.ssh with unit tests (vbondarev via rkanter)
 OOZIE-1317 TestEventGeneration.testCoordinatorActionEvent fails (mona)

Modified: oozie/trunk/sharelib/hive/src/main/java/org/apache/oozie/action/hadoop/HiveMain.java
URL: http://svn.apache.org/viewvc/oozie/trunk/sharelib/hive/src/main/java/org/apache/oozie/action/hadoop/HiveMain.java?rev=1468659&r1=1468658&r2=1468659&view=diff
==============================================================================
--- oozie/trunk/sharelib/hive/src/main/java/org/apache/oozie/action/hadoop/HiveMain.java (original)
+++ oozie/trunk/sharelib/hive/src/main/java/org/apache/oozie/action/hadoop/HiveMain.java Tue Apr 16 23:04:00 2013
@@ -238,6 +238,7 @@ public class HiveMain extends LauncherMa
         catch (SecurityException ex) {
             if (LauncherSecurityManager.getExitInvoked()) {
                 if (LauncherSecurityManager.getExitCode() != 0) {
+                    writeExternalChildIDs(logFile);
                     throw ex;
                 }
             }
@@ -255,6 +256,24 @@ public class HiveMain extends LauncherMa
         System.out.println();
     }
 
+    private void writeExternalChildIDs(String logFile) {
+        // harvesting and recording Hadoop Job IDs
+        try {
+            Properties jobIds = getHadoopJobIds(logFile, HIVE_JOB_IDS_PATTERNS);
+            File file = new File(System.getProperty(LauncherMapper.EXTERNAL_CHILD_IDS));
+            final String hadoopJobIDs = jobIds.getProperty(HADOOP_JOBS);
+            OutputStream os = new FileOutputStream(file);
+            os.write(hadoopJobIDs.getBytes());
+            os.close();
+            System.out.println(" Hadoop Job IDs executed by Hive: " + hadoopJobIDs);
+            System.out.println();
+        }
+        catch (Exception e) {
+            System.out.println("WARN: Error getting Hadoop Job IDs executed by Hive");
+            e.printStackTrace(System.out);
+        }
+    }
+
     private void runHive(String[] args) throws Exception {
         CliDriver.main(args);
     }

Modified: oozie/trunk/sharelib/hive/src/test/java/org/apache/oozie/action/hadoop/TestHiveActionExecutor.java
URL: http://svn.apache.org/viewvc/oozie/trunk/sharelib/hive/src/test/java/org/apache/oozie/action/hadoop/TestHiveActionExecutor.java?rev=1468659&r1=1468658&r2=1468659&view=diff
==============================================================================
--- oozie/trunk/sharelib/hive/src/test/java/org/apache/oozie/action/hadoop/TestHiveActionExecutor.java (original)
+++ oozie/trunk/sharelib/hive/src/test/java/org/apache/oozie/action/hadoop/TestHiveActionExecutor.java Tue Apr 16 23:04:00 2013
@@ -158,6 +158,7 @@ public class TestHiveActionExecutor exte
         Properties outputData = new Properties();
         outputData.load(new StringReader(context.getAction().getData()));
         assertTrue(outputData.containsKey(LauncherMain.HADOOP_JOBS));
+        assertEquals(outputData.get(LauncherMain.HADOOP_JOBS), context.getExternalChildIDs());
         //while this works in a real cluster, it does not with miniMR
         //assertTrue(outputData.getProperty(LauncherMain.HADOOP_JOBS).trim().length() > 0);
 

Modified: oozie/trunk/webapp/src/main/webapp/oozie-console.js
URL: http://svn.apache.org/viewvc/oozie/trunk/webapp/src/main/webapp/oozie-console.js?rev=1468659&r1=1468658&r2=1468659&view=diff
==============================================================================
--- oozie/trunk/webapp/src/main/webapp/oozie-console.js (original)
+++ oozie/trunk/webapp/src/main/webapp/oozie-console.js Tue Apr 16 23:04:00 2013
@@ -553,7 +553,7 @@ function jobDetailsPopup(response, reque
 				labelWidth : 70,
 				items : urlUnit
 			};
-            if (actionStatus.type == "pig") {
+            if (actionStatus.type == "pig" || actionStatus.type == "hive") {
 				var tabPanel = win.items.get(0);
 				tabPanel.add(childJobsItem);
 			}