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);
                        }


Reply via email to