private TaskExecution invokeOnTaskError(TaskExecution taskExecution, Throwable throwable){ TaskExecution listenerTaskExecution = getTaskExecutionCopy(taskExecution); if (this.taskExecutionListeners != null) { try { for (TaskExecutionListener taskExecutionListener : this.taskExecutionListeners) { taskExecutionListener.onTaskFailed(listenerTaskExecution, throwable); } } catch (Throwable listenerException) { this.listenerFailed = true; String errorMessage; if(StringUtils.hasText(listenerTaskExecution.getErrorMessage())) { errorMessage = String.format("%s :While handling " + "this error: %s", listenerException.getMessage(), listenerTaskExecution.getErrorMessage()); } else { errorMessage = listenerTaskExecution.getErrorMessage(); } logger.error(errorMessage); listenerTaskExecution.setErrorMessage(errorMessage); listenerTaskExecution.setExitCode(1); } } return listenerTaskExecution; }
private TaskExecution invokeOnTaskError(TaskExecution taskExecution, Throwable throwable){ TaskExecution listenerTaskExecution = getTaskExecutionCopy(taskExecution); if (this.taskExecutionListeners != null) { try { for (TaskExecutionListener taskExecutionListener : this.taskExecutionListeners) { taskExecutionListener.onTaskFailed(listenerTaskExecution, throwable); } } catch (Throwable listenerException) { this.listenerFailed = true; String errorMessage; if(StringUtils.hasText(listenerTaskExecution.getErrorMessage())) { errorMessage = String.format("%s :While handling " + "this error: %s", listenerException.getMessage(), listenerTaskExecution.getErrorMessage()); } else { errorMessage = listenerTaskExecution.getErrorMessage(); } logger.error(errorMessage); listenerTaskExecution.setErrorMessage(errorMessage); listenerTaskExecution.setExitCode(1); } } return listenerTaskExecution; }
private TaskExecution invokeOnTaskEnd(TaskExecution taskExecution){ TaskExecution listenerTaskExecution = getTaskExecutionCopy(taskExecution); if (this.taskExecutionListeners != null) { try { for (TaskExecutionListener taskExecutionListener : this.taskExecutionListeners) { taskExecutionListener.onTaskEnd(listenerTaskExecution); } } catch (Throwable listenerException) { String errorMessage = stackTraceToString(listenerException); if (StringUtils.hasText(listenerTaskExecution.getErrorMessage())) { errorMessage = String.format("%s :Task also threw this Exception: %s", errorMessage, listenerTaskExecution.getErrorMessage()); } logger.error(errorMessage); listenerTaskExecution.setErrorMessage(errorMessage); this.listenerFailed = true; } } return listenerTaskExecution; }
private TaskExecution invokeOnTaskEnd(TaskExecution taskExecution){ TaskExecution listenerTaskExecution = getTaskExecutionCopy(taskExecution); if (this.taskExecutionListeners != null) { try { for (TaskExecutionListener taskExecutionListener : this.taskExecutionListeners) { taskExecutionListener.onTaskEnd(listenerTaskExecution); } } catch (Throwable listenerException) { String errorMessage = stackTraceToString(listenerException); if (StringUtils.hasText(listenerTaskExecution.getErrorMessage())) { errorMessage = String.format("%s :Task also threw this Exception: %s", errorMessage, listenerTaskExecution.getErrorMessage()); } logger.error(errorMessage); listenerTaskExecution.setErrorMessage(errorMessage); this.listenerFailed = true; } } return listenerTaskExecution; }
private TaskExecution getTaskExecutionCopy(TaskExecution taskExecution){ Date startTime = new Date(taskExecution.getStartTime().getTime()); Date endTime = (taskExecution.getEndTime() == null) ? null : new Date(taskExecution.getEndTime().getTime()); return new TaskExecution(taskExecution.getExecutionId(), taskExecution.getExitCode(), taskExecution.getTaskName(), startTime, endTime,taskExecution.getExitMessage(), Collections.unmodifiableList(taskExecution.getArguments()), taskExecution.getErrorMessage(), taskExecution.getExternalExecutionId()); }
private TaskExecution getTaskExecutionCopy(TaskExecution taskExecution){ Date startTime = new Date(taskExecution.getStartTime().getTime()); Date endTime = (taskExecution.getEndTime() == null) ? null : new Date(taskExecution.getEndTime().getTime()); return new TaskExecution(taskExecution.getExecutionId(), taskExecution.getExitCode(), taskExecution.getTaskName(), startTime, endTime,taskExecution.getExitMessage(), Collections.unmodifiableList(taskExecution.getArguments()), taskExecution.getErrorMessage(), taskExecution.getExternalExecutionId()); }
/** * Constructor to initialize the TaskExecutionResource using a * {@link TaskExecution}. * * @param taskExecution contains the {@link TaskExecution} */ public TaskExecutionResource(TaskExecution taskExecution) { Assert.notNull(taskExecution, "taskExecution must not be null"); this.executionId = taskExecution.getExecutionId(); this.exitCode = taskExecution.getExitCode(); this.taskName = taskExecution.getTaskName(); this.exitMessage = taskExecution.getExitMessage(); this.arguments = Collections.unmodifiableList(taskExecution.getArguments()); this.startTime = taskExecution.getStartTime(); this.endTime = taskExecution.getEndTime(); this.errorMessage = taskExecution.getErrorMessage(); this.externalExecutionId = taskExecution.getExternalExecutionId(); }
/** * Constructor to initialize the TaskExecutionResource using a * {@link TaskExecution}. * * @param taskExecution contains the {@link TaskExecution} */ public TaskExecutionResource(TaskExecution taskExecution) { Assert.notNull(taskExecution, "taskExecution must not be null"); this.executionId = taskExecution.getExecutionId(); this.exitCode = taskExecution.getExitCode(); this.taskName = taskExecution.getTaskName(); this.exitMessage = taskExecution.getExitMessage(); this.arguments = Collections.unmodifiableList(taskExecution.getArguments()); this.startTime = taskExecution.getStartTime(); this.endTime = taskExecution.getEndTime(); this.errorMessage = taskExecution.getErrorMessage(); this.externalExecutionId = taskExecution.getExternalExecutionId(); }
/** * Constructor to initialize the TaskExecutionResource using * {@link TaskJobExecutionRel}. * * @param taskJobExecutionRel contains the {@link TaskExecution} but also a list of * the Job ExecutionIds that were associated with this task if applicable. */ public TaskExecutionResource(TaskJobExecutionRel taskJobExecutionRel) { Assert.notNull(taskJobExecutionRel, "taskJobExecutionDTO must not be null"); this.executionId = taskJobExecutionRel.getTaskExecution().getExecutionId(); this.exitCode = taskJobExecutionRel.getTaskExecution().getExitCode(); this.taskName = taskJobExecutionRel.getTaskExecution().getTaskName(); this.exitMessage = taskJobExecutionRel.getTaskExecution().getExitMessage(); this.arguments = Collections.unmodifiableList(taskJobExecutionRel.getTaskExecution().getArguments()); this.startTime = taskJobExecutionRel.getTaskExecution().getStartTime(); this.endTime = taskJobExecutionRel.getTaskExecution().getEndTime(); this.errorMessage = taskJobExecutionRel.getTaskExecution().getErrorMessage(); this.externalExecutionId = taskJobExecutionRel.getTaskExecution().getExternalExecutionId(); if (taskJobExecutionRel.getJobExecutionIds() == null) { this.jobExecutionIds = Collections.emptyList(); } else { this.jobExecutionIds = Collections .unmodifiableList(new ArrayList<>(taskJobExecutionRel.getJobExecutionIds())); } }
/** * Constructor to initialize the TaskExecutionResource using * {@link TaskJobExecutionRel}. * * @param taskJobExecutionRel contains the {@link TaskExecution} but also a list of * the Job ExecutionIds that were associated with this task if applicable. */ public TaskExecutionResource(TaskJobExecutionRel taskJobExecutionRel) { Assert.notNull(taskJobExecutionRel, "taskJobExecutionDTO must not be null"); this.executionId = taskJobExecutionRel.getTaskExecution().getExecutionId(); this.exitCode = taskJobExecutionRel.getTaskExecution().getExitCode(); this.taskName = taskJobExecutionRel.getTaskExecution().getTaskName(); this.exitMessage = taskJobExecutionRel.getTaskExecution().getExitMessage(); this.arguments = Collections.unmodifiableList(taskJobExecutionRel.getTaskExecution().getArguments()); this.startTime = taskJobExecutionRel.getTaskExecution().getStartTime(); this.endTime = taskJobExecutionRel.getTaskExecution().getEndTime(); this.errorMessage = taskJobExecutionRel.getTaskExecution().getErrorMessage(); this.externalExecutionId = taskJobExecutionRel.getTaskExecution().getExternalExecutionId(); if (taskJobExecutionRel.getJobExecutionIds() == null) { this.jobExecutionIds = Collections.emptyList(); } else { this.jobExecutionIds = Collections .unmodifiableList(new ArrayList<>(taskJobExecutionRel.getJobExecutionIds())); } }
private void doTaskEnd() { if((this.listenerFailed || this.started) && !this.finished) { this.taskExecution.setEndTime(new Date()); if(this.applicationFailedException != null) { this.taskExecution.setErrorMessage(stackTraceToString(this.applicationFailedException)); } this.taskExecution.setExitCode(calcExitStatus()); if (this.applicationFailedException != null) { setExitMessage(invokeOnTaskError(this.taskExecution, this.applicationFailedException)); } setExitMessage(invokeOnTaskEnd(this.taskExecution)); this.taskRepository.completeTaskExecution(this.taskExecution.getExecutionId(), this.taskExecution.getExitCode(), this.taskExecution.getEndTime(), this.taskExecution.getExitMessage(), this.taskExecution.getErrorMessage()); this.finished = true; if(this.taskProperties.getClosecontextEnabled() && this.context.isActive()) { this.context.close(); } } else if(!this.started){ logger.error("An event to end a task has been received for a task that has " + "not yet started."); } }
private void doTaskEnd() { if((this.listenerFailed || this.started) && !this.finished) { this.taskExecution.setEndTime(new Date()); if(this.applicationFailedException != null) { this.taskExecution.setErrorMessage(stackTraceToString(this.applicationFailedException)); } this.taskExecution.setExitCode(calcExitStatus()); if (this.applicationFailedException != null) { setExitMessage(invokeOnTaskError(this.taskExecution, this.applicationFailedException)); } setExitMessage(invokeOnTaskEnd(this.taskExecution)); this.taskRepository.completeTaskExecution(this.taskExecution.getExecutionId(), this.taskExecution.getExitCode(), this.taskExecution.getEndTime(), this.taskExecution.getExitMessage(), this.taskExecution.getErrorMessage()); this.finished = true; if(this.taskProperties.getClosecontextEnabled() && this.context.isActive()) { this.context.close(); } } else if(!this.started){ logger.error("An event to end a task has been received for a task that has " + "not yet started."); } }