use of org.ow2.proactive.scheduler.common.task.TaskInfo in project scheduling by ow2-proactive.
the class LiveJobs method terminateTask.
private void terminateTask(JobData jobData, InternalTask task, boolean errorOccurred, TaskResultImpl result, TerminationData terminationData) {
InternalJob job = jobData.job;
TaskId taskId = task.getId();
tlogger.debug(taskId, "result added to job " + job.getId());
// to be done before terminating the task, once terminated it is not
// running anymore..
job.getRunningTaskDescriptor(taskId);
ChangedTasksInfo changesInfo = job.terminateTask(errorOccurred, taskId, listener, result.getAction(), result);
boolean jobFinished = job.isFinished();
// update job info if it is terminated
if (jobFinished) {
// terminating job
job.terminate();
jlogger.debug(job.getId(), "terminated");
terminationData.addJobToTerminate(job.getId());
}
// Update database
if (result.getAction() != null) {
dbManager.updateAfterWorkflowTaskFinished(job, changesInfo, result);
} else {
dbManager.updateAfterTaskFinished(job, task, result);
}
// send event
listener.taskStateUpdated(job.getOwner(), new NotificationData<TaskInfo>(SchedulerEvent.TASK_RUNNING_TO_FINISHED, new TaskInfoImpl((TaskInfoImpl) task.getTaskInfo())));
// if this job is finished (every task have finished)
jlogger.info(job.getId(), "finished tasks " + job.getNumberOfFinishedTasks() + ", total tasks " + job.getTotalNumberOfTasks() + ", finished " + jobFinished);
if (jobFinished) {
// send event to client
listener.jobStateUpdated(job.getOwner(), new NotificationData<JobInfo>(SchedulerEvent.JOB_RUNNING_TO_FINISHED, new JobInfoImpl((JobInfoImpl) job.getJobInfo())));
listener.jobUpdatedFullData(job);
}
}
use of org.ow2.proactive.scheduler.common.task.TaskInfo in project scheduling by ow2-proactive.
the class LiveJobs method updateTaskPausedOnerrorState.
private void updateTaskPausedOnerrorState(InternalJob job, TaskId taskToUpdate) {
try {
InternalTask t = job.getTask(taskToUpdate);
TaskInfo ti = new TaskInfoImpl((TaskInfoImpl) t.getTaskInfo());
listener.taskStateUpdated(job.getOwner(), new NotificationData<>(SchedulerEvent.TASK_IN_ERROR, ti));
} catch (UnknownTaskException e) {
logger.error(e);
}
}
use of org.ow2.proactive.scheduler.common.task.TaskInfo in project scheduling by ow2-proactive.
the class LiveJobs method restartTaskOnError.
private void restartTaskOnError(JobData jobData, InternalTask task, TaskStatus status, TaskResultImpl result, long waitTime, TerminationData terminationData) {
InternalJob job = jobData.job;
tlogger.info(task.getId(), "node Exclusion : restart mode is '" + task.getRestartTaskOnError() + "'");
if (task.getRestartTaskOnError().equals(RestartMode.ELSEWHERE)) {
task.setNodeExclusion(task.getExecuterInformation().getNodes());
}
task.setStatus(status);
job.newWaitingTask();
dbManager.updateAfterTaskFinished(job, task, result);
listener.taskStateUpdated(job.getOwner(), new NotificationData<TaskInfo>(SchedulerEvent.TASK_WAITING_FOR_RESTART, new TaskInfoImpl((TaskInfoImpl) task.getTaskInfo())));
terminationData.addRestartData(task.getId(), waitTime);
logger.info("END restartTaskOnError");
}
Aggregations