public void releaseTaskAttempt(TaskAttempt taskAttempt) { if (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 cancel(TaskAttempt taskAttempt) { if (taskAttempt.isLeafTask()) { releaseTaskAttempt(taskAttempt); List<DataLocation> locations = taskAttempt.getTask().getDataLocations(); for (DataLocation location : locations) { HostVolumeMapping volumeMapping = scheduledRequests.leafTaskHostMapping.get(location.getHost()); volumeMapping.addTaskAttempt(location.getVolumeId(), taskAttempt); } scheduledRequests.leafTasks.add(taskAttempt.getId()); } else { scheduledRequests.nonLeafTasks.add(taskAttempt.getId()); } context .getMasterContext() .getEventHandler() .handle(new TaskAttemptEvent(taskAttempt.getId(), TaskAttemptEventType.TA_ASSIGN_CANCEL)); }