private void addNonLeafTask(TaskAttemptToSchedulerEvent event) { nonLeafTasks.add(event.getTaskAttempt().getId()); }
private void addNonLeafTask(TaskAttemptToSchedulerEvent event) { nonLeafTasks.add(event.getTaskAttempt().getId()); }
public void releaseTaskAttempt(TaskAttempt taskAttempt) { if (taskAttempt != null && taskAttempt.isLeafTask() && taskAttempt.getWorkerConnectionInfo() != null) { HostVolumeMapping mapping = scheduledRequests.leafTaskHostMapping.get(taskAttempt.getWorkerConnectionInfo().getHost()); if (mapping != null && mapping.lastAssignedVolumeId.containsKey(taskAttempt.getId())) { mapping.decreaseConcurrency(mapping.lastAssignedVolumeId.remove(taskAttempt.getId())); } } } /**
public void releaseTaskAttempt(TaskAttempt taskAttempt) { if (taskAttempt != null && taskAttempt.isLeafTask() && taskAttempt.getWorkerConnectionInfo() != null) { HostVolumeMapping mapping = scheduledRequests.leafTaskHostMapping.get(taskAttempt.getWorkerConnectionInfo().getHost()); if (mapping != null && mapping.lastAssignedVolumeId.containsKey(taskAttempt.getId())) { mapping.decreaseConcurrency(mapping.lastAssignedVolumeId.remove(taskAttempt.getId())); } } } /**
public TaskAttempt newAttempt() { TaskAttempt attempt = new TaskAttempt(scheduleContext, QueryIdFactory.newTaskAttemptId(this.getId(), ++nextAttempt), this, eventHandler); lastAttemptId = attempt.getId(); return attempt; }
public TaskAttempt newAttempt() { TaskAttempt attempt = new TaskAttempt(scheduleContext, QueryIdFactory.newTaskAttemptId(this.getId(), ++nextAttempt), this, eventHandler); lastAttemptId = attempt.getId(); return attempt; }
@Override public void transition(TaskAttempt taskAttempt, TaskAttemptEvent event) { if (!(event instanceof TaskFatalErrorEvent)) { throw new IllegalArgumentException("event should be a TaskFatalErrorEvent type."); } TaskFatalErrorEvent errorEvent = (TaskFatalErrorEvent) event; taskAttempt.eventHandler.handle(new TaskTAttemptFailedEvent(taskAttempt.getId(), errorEvent.getError())); taskAttempt.addDiagnosticInfo(errorEvent.getError().getMessage()); LOG.error(taskAttempt.getId() + " FROM " + taskAttempt.getWorkerConnectionInfo().getHost() + " >> " + errorEvent.getError().getMessage()); } }
@Override public void transition(TaskAttempt taskAttempt, TaskAttemptEvent event) { if (!(event instanceof TaskAttemptAssignedEvent)) { throw new IllegalArgumentException("event should be a TaskAttemptAssignedEvent type."); } TaskAttemptAssignedEvent castEvent = (TaskAttemptAssignedEvent) event; taskAttempt.workerConnectionInfo = castEvent.getWorkerConnectionInfo(); taskAttempt.getTask().setLaunchTime(System.currentTimeMillis()); taskAttempt.eventHandler.handle( new TaskTAttemptEvent(taskAttempt.getId(), TaskEventType.T_ATTEMPT_LAUNCHED)); } }
@Override public void transition(TaskAttempt taskAttempt, TaskAttemptEvent event) { if (!(event instanceof TaskAttemptAssignedEvent)) { throw new IllegalArgumentException("event should be a TaskAttemptAssignedEvent type."); } TaskAttemptAssignedEvent castEvent = (TaskAttemptAssignedEvent) event; taskAttempt.workerConnectionInfo = castEvent.getWorkerConnectionInfo(); taskAttempt.getTask().setLaunchTime(System.currentTimeMillis()); taskAttempt.eventHandler.handle( new TaskTAttemptEvent(taskAttempt.getId(), TaskEventType.T_ATTEMPT_LAUNCHED)); } }
@Override public void transition(TaskAttempt taskAttempt, TaskAttemptEvent event) { if (!(event instanceof TaskFatalErrorEvent)) { throw new IllegalArgumentException("event should be a TaskFatalErrorEvent type."); } TaskFatalErrorEvent errorEvent = (TaskFatalErrorEvent) event; taskAttempt.eventHandler.handle(new TaskTAttemptFailedEvent(taskAttempt.getId(), errorEvent.getError())); taskAttempt.addDiagnosticInfo(errorEvent.getError().getMessage()); LOG.error(taskAttempt.getId() + " FROM " + taskAttempt.getWorkerConnectionInfo().getHost() + " >> " + errorEvent.getError().getMessage()); } }
@Override public void transition(TaskAttempt taskAttempt, TaskAttemptEvent event) { taskAttempt.eventHandler.handle(new LocalTaskEvent(taskAttempt.getId(), taskAttempt.getWorkerConnectionInfo().getId(), LocalTaskEventType.KILL)); } }
@Override public void transition(TaskAttempt taskAttempt, TaskAttemptEvent event) { taskAttempt.eventHandler.handle(new LocalTaskEvent(taskAttempt.getId(), taskAttempt.getWorkerConnectionInfo().getId(), LocalTaskEventType.KILL)); } }
@Override public void transition(TaskAttempt taskAttempt, TaskAttemptEvent event) { if (!(event instanceof TaskCompletionEvent)) { throw new IllegalArgumentException("event should be a TaskCompletionEvent type."); } TaskCompletionReport report = ((TaskCompletionEvent)event).getReport(); try { if (report.getPartitionsCount() > 0) { taskAttempt.addPartitions(report.getPartitionsList()); } taskAttempt.fillTaskStatistics(report); taskAttempt.eventHandler.handle(new TaskTAttemptEvent(taskAttempt.getId(), TaskEventType.T_ATTEMPT_SUCCEEDED)); } catch (Throwable t) { taskAttempt.eventHandler.handle(new TaskFatalErrorEvent(taskAttempt.getId(), t)); taskAttempt.addDiagnosticInfo(ExceptionUtils.getStackTrace(t)); } } }
@Override public void transition(TaskAttempt taskAttempt, TaskAttemptEvent event) { if (!(event instanceof TaskCompletionEvent)) { throw new IllegalArgumentException("event should be a TaskCompletionEvent type."); } TaskCompletionReport report = ((TaskCompletionEvent)event).getReport(); try { if (report.getPartitionsCount() > 0) { taskAttempt.addPartitions(report.getPartitionsList()); } taskAttempt.fillTaskStatistics(report); taskAttempt.eventHandler.handle(new TaskTAttemptEvent(taskAttempt.getId(), TaskEventType.T_ATTEMPT_SUCCEEDED)); } catch (Throwable t) { taskAttempt.eventHandler.handle(new TaskFatalErrorEvent(taskAttempt.getId(), t)); taskAttempt.addDiagnosticInfo(ExceptionUtils.getStackTrace(t)); } } }
protected void cancel(TaskAttempt taskAttempt) { TaskAttemptToSchedulerEvent schedulerEvent = new TaskAttemptToSchedulerEvent( EventType.T_SCHEDULE, taskAttempt.getTask().getId().getExecutionBlockId(), null, taskAttempt); if(taskAttempt.isLeafTask()) { releaseTaskAttempt(taskAttempt); scheduledRequests.addLeafTask(schedulerEvent); } else { scheduledRequests.addNonLeafTask(schedulerEvent); } context.getMasterContext().getEventHandler().handle( new TaskAttemptEvent(taskAttempt.getId(), TaskAttemptEventType.TA_ASSIGN_CANCEL)); }
protected void cancel(TaskAttempt taskAttempt) { TaskAttemptToSchedulerEvent schedulerEvent = new TaskAttemptToSchedulerEvent( EventType.T_SCHEDULE, taskAttempt.getTask().getId().getExecutionBlockId(), null, taskAttempt); if(taskAttempt.isLeafTask()) { releaseTaskAttempt(taskAttempt); scheduledRequests.addLeafTask(schedulerEvent); } else { scheduledRequests.addNonLeafTask(schedulerEvent); } context.getMasterContext().getEventHandler().handle( new TaskAttemptEvent(taskAttempt.getId(), TaskAttemptEventType.TA_ASSIGN_CANCEL)); }
private void fillTaskStatistics(TaskCompletionReport report) { this.progress = 1.0f; List<IntermediateEntry> partitions = new ArrayList<IntermediateEntry>(); if (report.getShuffleFileOutputsCount() > 0) { this.getTask().setShuffleFileOutputs(report.getShuffleFileOutputsList()); PullHost host = new PullHost(getWorkerConnectionInfo().getHost(), getWorkerConnectionInfo().getPullServerPort()); for (ShuffleFileOutput p : report.getShuffleFileOutputsList()) { IntermediateEntry entry = new IntermediateEntry(getId().getTaskId().getId(), getId().getId(), p.getPartId(), host, p.getVolume()); partitions.add(entry); } } this.getTask().setIntermediateData(partitions); if (report.hasInputStats()) { this.inputStats = report.getInputStats(); } if (report.hasResultStats()) { this.resultStats = report.getResultStats(); this.getTask().setStats(new TableStats(resultStats)); } }
private void fillTaskStatistics(TaskCompletionReport report) { this.progress = 1.0f; List<IntermediateEntry> partitions = new ArrayList<>(); if (report.getShuffleFileOutputsCount() > 0) { this.getTask().setShuffleFileOutputs(report.getShuffleFileOutputsList()); PullHost host = new PullHost(getWorkerConnectionInfo().getHost(), getWorkerConnectionInfo().getPullServerPort()); for (ShuffleFileOutput p : report.getShuffleFileOutputsList()) { IntermediateEntry entry = new IntermediateEntry(getId().getTaskId().getId(), getId().getId(), p.getPartId(), host, p.getVolume()); partitions.add(entry); } } this.getTask().setIntermediateData(partitions); if (report.hasInputStats()) { this.inputStats = report.getInputStats(); } if (report.hasResultStats()) { this.resultStats = report.getResultStats(); this.getTask().setStats(new TableStats(resultStats)); } }