Fixed Scheduler to abort only running or completed tasks
git-svn-id: https://hyracks.googlecode.com/svn/branches/hyracks_dev_next@546 123451ca-8445-de46-9d55-352943316053
diff --git a/hyracks-control-cc/src/main/java/edu/uci/ics/hyracks/control/cc/scheduler/JobScheduler.java b/hyracks-control-cc/src/main/java/edu/uci/ics/hyracks/control/cc/scheduler/JobScheduler.java
index 616e8e7..68d794c 100644
--- a/hyracks-control-cc/src/main/java/edu/uci/ics/hyracks/control/cc/scheduler/JobScheduler.java
+++ b/hyracks-control-cc/src/main/java/edu/uci/ics/hyracks/control/cc/scheduler/JobScheduler.java
@@ -471,15 +471,18 @@
Map<String, List<TaskAttemptId>> abortTaskAttemptMap = new HashMap<String, List<TaskAttemptId>>();
for (TaskAttempt ta : tcAttempt.getTaskAttempts()) {
TaskAttemptId taId = ta.getTaskAttemptId();
+ TaskAttempt.TaskStatus status = ta.getStatus();
abortTaskIds.add(taId);
LOGGER.info("Checking " + taId + ": " + ta.getStatus());
- ta.setStatus(TaskAttempt.TaskStatus.ABORTED, null);
- List<TaskAttemptId> abortTaskAttempts = abortTaskAttemptMap.get(ta.getNodeId());
- if (abortTaskAttempts == null) {
- abortTaskAttempts = new ArrayList<TaskAttemptId>();
- abortTaskAttemptMap.put(ta.getNodeId(), abortTaskAttempts);
+ if (status == TaskAttempt.TaskStatus.RUNNING || status == TaskAttempt.TaskStatus.COMPLETED) {
+ ta.setStatus(TaskAttempt.TaskStatus.ABORTED, null);
+ List<TaskAttemptId> abortTaskAttempts = abortTaskAttemptMap.get(ta.getNodeId());
+ if (abortTaskAttempts == null) {
+ abortTaskAttempts = new ArrayList<TaskAttemptId>();
+ abortTaskAttemptMap.put(ta.getNodeId(), abortTaskAttempts);
+ }
+ abortTaskAttempts.add(taId);
}
- abortTaskAttempts.add(taId);
}
final JobId jobId = jobRun.getJobId();
LOGGER.info("Abort map for job: " + jobId + ": " + abortTaskAttemptMap);