Repository: oozie Updated Branches: refs/heads/master b5a4e06ba -> c48c1a643
OOZIE-2109. Possibly incorrect ID may be printed for map-reduce action errors. Contributed by Harsh J. Project: http://git-wip-us.apache.org/repos/asf/oozie/repo Commit: http://git-wip-us.apache.org/repos/asf/oozie/commit/c48c1a64 Tree: http://git-wip-us.apache.org/repos/asf/oozie/tree/c48c1a64 Diff: http://git-wip-us.apache.org/repos/asf/oozie/diff/c48c1a64 Branch: refs/heads/master Commit: c48c1a643eab036b2a8ecf7fe6ff4f90e5c22478 Parents: b5a4e06 Author: Harsh J <[email protected]> Authored: Sun Jan 11 02:04:24 2015 +0530 Committer: Harsh J <[email protected]> Committed: Thu Feb 5 06:36:31 2015 +0530 ---------------------------------------------------------------------- .../oozie/action/hadoop/JavaActionExecutor.java | 11 +++++++++- .../action/hadoop/MapReduceActionExecutor.java | 22 +++++++++++++------- 2 files changed, 24 insertions(+), 9 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/oozie/blob/c48c1a64/core/src/main/java/org/apache/oozie/action/hadoop/JavaActionExecutor.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/oozie/action/hadoop/JavaActionExecutor.java b/core/src/main/java/org/apache/oozie/action/hadoop/JavaActionExecutor.java index 7beac5c..3383522 100644 --- a/core/src/main/java/org/apache/oozie/action/hadoop/JavaActionExecutor.java +++ b/core/src/main/java/org/apache/oozie/action/hadoop/JavaActionExecutor.java @@ -1270,6 +1270,15 @@ public class JavaActionExecutor extends ActionExecutor { return runningJob; } + /** + * Useful for overriding in actions that do subsequent job runs + * such as the MapReduce Action, where the launcher job is not the + * actual job that then gets monitored. + */ + protected String getActualExternalId(WorkflowAction action) { + return action.getExternalId(); + } + @Override public void check(Context context, WorkflowAction action) throws ActionExecutorException { JobClient jobClient = null; @@ -1285,7 +1294,7 @@ public class JavaActionExecutor extends ActionExecutor { context.setExecutionData(FAILED, null); throw new ActionExecutorException(ActionExecutorException.ErrorType.FAILED, "JA017", "Could not lookup launched hadoop Job ID [{0}] which was associated with " + - " action [{1}]. Failing this action!", action.getExternalId(), action.getId()); + " action [{1}]. Failing this action!", getActualExternalId(action), action.getId()); } if (runningJob.isComplete()) { Path actionDir = context.getActionDir(); http://git-wip-us.apache.org/repos/asf/oozie/blob/c48c1a64/core/src/main/java/org/apache/oozie/action/hadoop/MapReduceActionExecutor.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/oozie/action/hadoop/MapReduceActionExecutor.java b/core/src/main/java/org/apache/oozie/action/hadoop/MapReduceActionExecutor.java index 004adf9..de8290e 100644 --- a/core/src/main/java/org/apache/oozie/action/hadoop/MapReduceActionExecutor.java +++ b/core/src/main/java/org/apache/oozie/action/hadoop/MapReduceActionExecutor.java @@ -67,6 +67,18 @@ public class MapReduceActionExecutor extends JavaActionExecutor { } @Override + protected String getActualExternalId(WorkflowAction action) { + String launcherJobId = action.getExternalId(); + String childId = action.getExternalChildIDs(); + + if (childId != null && !childId.isEmpty()) { + return childId; + } else { + return launcherJobId; + } + } + + @Override protected String getLauncherMain(Configuration launcherConf, Element actionXml) { String mainClass; Namespace ns = actionXml.getNamespace(); @@ -325,15 +337,9 @@ public class MapReduceActionExecutor extends JavaActionExecutor { protected RunningJob getRunningJob(Context context, WorkflowAction action, JobClient jobClient) throws Exception{ RunningJob runningJob; - String launcherJobId = action.getExternalId(); - String childJobId = action.getExternalChildIDs(); + String jobId = getActualExternalId(action); - if (childJobId != null && childJobId.length() > 0) { - runningJob = jobClient.getJob(JobID.forName(childJobId)); - } - else { - runningJob = jobClient.getJob(JobID.forName(launcherJobId)); - } + runningJob = jobClient.getJob(JobID.forName(jobId)); return runningJob; }
