ClusterTask scheduleRetry(ClusterJob job, ClusterTask task) throws Exception { task.addAttempt(); List<ClusterTask> retryTasks = taskService.getRetryTask(task); if (retryTasks.size() == 1) { LOG.trace("Only one retry task for job {} for task {}", job, task); return retryTasks.get(0); } // store all retry tasks for (ClusterTask t : retryTasks) { clusterStore.writeClusterTask(t); } // Remove self from current stage job.getCurrentStage().remove(task.getTaskId()); // Add first retry task to current stage job.getCurrentStage().add(retryTasks.get(0).getTaskId()); // Add the rest of retry tasks after current stage. TODO: this needs to be revisited. job.insertTasksAfterCurrentStage(ImmutableList.copyOf(Iterables.transform(Iterables.skip(retryTasks, 1), CLUSTER_TASK_STRING_FUNCTION))); LOG.trace("Retry job {} for task {}", job, task); return retryTasks.get(0); }
Set<String> currentStage = job.getCurrentStage();
Set currentStage = job.getCurrentStage(); Set newStage = job.getCurrentStage(); jobScheduler.run(); job = clusterStore.getClusterJob(JobId.fromString(jobId)); newStage = job.getCurrentStage();
while (true) { Multiset<ActionService> actionServices = HashMultiset.create(); for (String taskId : job.getCurrentStage()) { ClusterTask task = clusterStore.getClusterTask(TaskId.fromString(taskId)); actionServices.add(new ActionService(task.getTaskName().name(), task.getService()));