reporter.pushEvent(queryId, new Event.WorkflowProgressEvent(eventData));
}
private boolean updateJobState() throws IOException {
if (jobProgress == null) {
jobProgress = new MapReduceJobState(
rj, jobClient.getMapTaskReports(jobId), jobClient.getReduceTaskReports(jobId));
return true;
}
boolean complete = rj.isComplete();
boolean successful = rj.isSuccessful();
float mapProgress = rj.mapProgress();
float reduceProgress = rj.reduceProgress();
boolean update = !(
jobProgress.isComplete() == complete &&
jobProgress.isSuccessful() == successful &&
AmbroseHiveUtil.isEqual(jobProgress.getMapProgress(), mapProgress) &&
AmbroseHiveUtil.isEqual(jobProgress.getReduceProgress(), reduceProgress)
);
//do progress report only if necessary
if (update) {
jobProgress = new MapReduceJobState(
rj, jobClient.getMapTaskReports(jobId), jobClient.getReduceTaskReports(jobId));
jobProgress.setJobLastUpdateTime(System.currentTimeMillis());
}
return update;
}