public static String toString(TaskAttemptId taid) { return taid.toString(); }
@Override public GetDiagnosticsResponse getDiagnostics(GetDiagnosticsRequest request) throws IOException { TaskAttemptId taskAttemptId = request.getTaskAttemptId(); Job job = verifyAndGetJob(taskAttemptId.getTaskId().getJobId(), true); GetDiagnosticsResponse response = recordFactory.newRecordInstance(GetDiagnosticsResponse.class); response.addAllDiagnostics(job.getTask(taskAttemptId.getTaskId()).getAttempt(taskAttemptId).getDiagnostics()); return response; }
@SuppressWarnings("unchecked") @Override public TaskAttemptStateInternal transition(TaskAttemptImpl taskAttempt, TaskAttemptEvent event) { taskAttempt.appContext.getTaskAttemptFinishingMonitor().unregister( taskAttempt.attemptId); sendContainerCleanup(taskAttempt, event); if(taskAttempt.getID().getTaskId().getTaskType() == TaskType.REDUCE) { // after a reduce task has succeeded, its outputs are in safe in HDFS. // logically such a task should not be killed. we only come here when // there is a race condition in the event queue. E.g. some logic sends // a kill request to this attempt when the successful completion event // for this task is already in the event queue. so the kill event will // get executed immediately after the attempt is marked successful and // result in this transition being exercised. // ignore this for reduce tasks LOG.info("Ignoring killed event for successful reduce task attempt" + taskAttempt.getID().toString()); return TaskAttemptStateInternal.SUCCESS_CONTAINER_CLEANUP; } else { // Store reschedule flag so that after clean up is completed, new // attempt is scheduled/rescheduled based on it. if (event instanceof TaskAttemptKillEvent) { taskAttempt.setRescheduleNextAttempt( ((TaskAttemptKillEvent)event).getRescheduleAttempt()); } return TaskAttemptStateInternal.KILL_CONTAINER_CLEANUP; } } }
@Override public boolean canCommit(TaskAttemptId taskAttemptID) { readLock.lock(); boolean canCommit = false; try { if (commitAttempt != null) { canCommit = taskAttemptID.equals(commitAttempt); LOG.info("Result of canCommit for " + taskAttemptID + ":" + canCommit); } } finally { readLock.unlock(); } return canCommit; }
@Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((containerID == null) ? 0 : containerID.hashCode()); result = prime * result + ((containerMgrAddress == null) ? 0 : containerMgrAddress.hashCode()); result = prime * result + ((containerToken == null) ? 0 : containerToken.hashCode()); result = prime * result + ((taskAttemptID == null) ? 0 : taskAttemptID.hashCode()); return result; }
@Override public GetTaskAttemptReportResponse getTaskAttemptReport( GetTaskAttemptReportRequest request) throws IOException { TaskAttemptId taskAttemptId = request.getTaskAttemptId(); Job job = verifyAndGetJob(taskAttemptId.getTaskId().getJobId(), true); GetTaskAttemptReportResponse response = recordFactory.newRecordInstance(GetTaskAttemptReportResponse.class); response.setTaskAttemptReport(job.getTask(taskAttemptId.getTaskId()).getAttempt(taskAttemptId).getReport()); return response; }
@SuppressWarnings("unchecked") @Override public TaskAttemptStateInternal transition(TaskAttemptImpl taskAttempt, TaskAttemptEvent event) { taskAttempt.appContext.getTaskAttemptFinishingMonitor().unregister( taskAttempt.attemptId); sendContainerCleanup(taskAttempt, event); if(taskAttempt.getID().getTaskId().getTaskType() == TaskType.REDUCE) { // after a reduce task has succeeded, its outputs are in safe in HDFS. // logically such a task should not be killed. we only come here when // there is a race condition in the event queue. E.g. some logic sends // a kill request to this attempt when the successful completion event // for this task is already in the event queue. so the kill event will // get executed immediately after the attempt is marked successful and // result in this transition being exercised. // ignore this for reduce tasks LOG.info("Ignoring killed event for successful reduce task attempt" + taskAttempt.getID().toString()); return TaskAttemptStateInternal.SUCCESS_CONTAINER_CLEANUP; } else { // Store reschedule flag so that after clean up is completed, new // attempt is scheduled/rescheduled based on it. if (event instanceof TaskAttemptKillEvent) { taskAttempt.setRescheduleNextAttempt( ((TaskAttemptKillEvent)event).getRescheduleAttempt()); } return TaskAttemptStateInternal.KILL_CONTAINER_CLEANUP; } } }
@Override public boolean canCommit(TaskAttemptId taskAttemptID) { readLock.lock(); boolean canCommit = false; try { if (commitAttempt != null) { canCommit = taskAttemptID.equals(commitAttempt); LOG.info("Result of canCommit for " + taskAttemptID + ":" + canCommit); } } finally { readLock.unlock(); } return canCommit; }
@Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((containerID == null) ? 0 : containerID.hashCode()); result = prime * result + ((containerMgrAddress == null) ? 0 : containerMgrAddress.hashCode()); result = prime * result + ((containerToken == null) ? 0 : containerToken.hashCode()); result = prime * result + ((taskAttemptID == null) ? 0 : taskAttemptID.hashCode()); result = prime * result + (dumpContainerThreads ? 1 : 0); return result; }
@Override public void handleFailedContainer(TaskAttemptId attemptID) { toBePreempted.remove(attemptID); checkpoints.remove(attemptID.getTaskId()); }
public TaskAttemptStateInternal transition(TaskAttemptImpl taskAttempt, TaskAttemptEvent event) { if(taskAttempt.getID().getTaskId().getTaskType() == TaskType.REDUCE) { taskAttempt.getID().toString()); return TaskAttemptStateInternal.SUCCEEDED; taskAttempt, TaskAttemptStateInternal.KILLED); taskAttempt.eventHandler.handle(new JobHistoryEvent(taskAttempt.attemptId .getTaskId().getJobId(), tauce)); boolean rescheduleNextTaskAttempt = false; if (event instanceof TaskAttemptKillEvent) {
public static String toString(TaskAttemptId taid) { return taid.toString(); }
@Override public boolean canCommit(TaskAttemptId taskAttemptID) { readLock.lock(); boolean canCommit = false; try { if (commitAttempt != null) { canCommit = taskAttemptID.equals(commitAttempt); LOG.info("Result of canCommit for " + taskAttemptID + ":" + canCommit); } } finally { readLock.unlock(); } return canCommit; }
@Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((containerID == null) ? 0 : containerID.hashCode()); result = prime * result + ((containerMgrAddress == null) ? 0 : containerMgrAddress.hashCode()); result = prime * result + ((containerToken == null) ? 0 : containerToken.hashCode()); result = prime * result + ((taskAttemptID == null) ? 0 : taskAttemptID.hashCode()); result = prime * result + (dumpContainerThreads ? 1 : 0); return result; }