diff --git shims/src/hadoop23/org/apache/pig/backend/hadoop23/PigJobControl.java shims/src/hadoop23/org/apache/pig/backend/hadoop23/PigJobControl.java index 6b03b50..d049919 100644 --- shims/src/hadoop23/org/apache/pig/backend/hadoop23/PigJobControl.java +++ shims/src/hadoop23/org/apache/pig/backend/hadoop23/PigJobControl.java @@ -20,6 +20,7 @@ package org.apache.pig.backend.hadoop23; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.util.Iterator; +import java.util.List; import java.util.LinkedList; import org.apache.commons.logging.Log; @@ -179,7 +180,46 @@ public class PigJobControl extends JobControl { } while(it.hasNext()) { ControlledJob j = it.next(); - log.debug("Checking state of job "+j); + + StringBuffer sb = new StringBuffer(); + + // Job name + sb.append("job name:\t"); + String jobName = null; + try { + jobName = j.getJobName(); + } catch(NullPointerException npe) { + log.warn("Fail to get job name. Job status not available.", npe); + } + sb.append(jobName).append("\n"); // still ok when jobName is null, "null" is appended + + // Others + sb.append("job id:\t").append(j.getJobID()).append("\n"); + sb.append("job state:\t").append(j.getJobState()).append("\n"); + sb.append("job mapred id:\t").append(j.getJobID()).append("\n"); + sb.append("job message:\t").append(j.getMessage()).append("\n"); + + // The jobs the current job depends on + List dependentJobs = j.getDependentJobs(); + if (dependentJobs == null || dependentJobs.size() == 0) { + sb.append("job has no depending job:\t").append("\n"); + } else { + sb.append("job has ").append(dependentJobs.size()). + append(" dependeng jobs:\n"); + for (int i = 0; i < dependentJobs.size(); i++) { + sb.append("\t depending job ").append(i).append(":\t"); + try { + jobName = dependentJobs.get(i).getJobName(); + } catch (NullPointerException npe) { + log.warn("Fail to get job name. Job status not available.", npe); + } + sb.append(jobName).append("\n"); + } + } + + // Log + log.debug("Checking state of job " + sb.toString()); + switch(checkState(j)) { case SUCCESS: getJobs(successfulJobs).add(j);