@Override public void completeTaskExecution(long executionId, Integer exitCode, Date endTime, String exitMessage, String errorMessage) { if(!this.taskExecutions.containsKey(executionId)) { throw new IllegalStateException("Invalid TaskExecution, ID " + executionId + " not found."); } TaskExecution taskExecution= taskExecutions.get(executionId); taskExecution.setEndTime(endTime); taskExecution.setExitCode(exitCode); taskExecution.setExitMessage(exitMessage); taskExecution.setErrorMessage(errorMessage); }
private TaskExecution invokeOnTaskStartup(TaskExecution taskExecution){ TaskExecution listenerTaskExecution = getTaskExecutionCopy(taskExecution); List<TaskExecutionListener> startupListenerList = new ArrayList<>(this.taskExecutionListeners); if (!CollectionUtils.isEmpty(startupListenerList)) { try { Collections.reverse(startupListenerList); for (TaskExecutionListener taskExecutionListener : startupListenerList) { taskExecutionListener.onTaskStartup(listenerTaskExecution); } } catch (Throwable currentListenerException) { logger.error(currentListenerException); this.listenerFailed = true; this.taskExecution.setErrorMessage(currentListenerException.getMessage()); this.listenerException = currentListenerException; throw currentListenerException; } } return listenerTaskExecution; }
@Override public void completeTaskExecution(long executionId, Integer exitCode, Date endTime, String exitMessage, String errorMessage) { if(!this.taskExecutions.containsKey(executionId)) { throw new IllegalStateException("Invalid TaskExecution, ID " + executionId + " not found."); } TaskExecution taskExecution= taskExecutions.get(executionId); taskExecution.setEndTime(endTime); taskExecution.setExitCode(exitCode); taskExecution.setExitMessage(exitMessage); taskExecution.setErrorMessage(errorMessage); }
private TaskExecution invokeOnTaskStartup(TaskExecution taskExecution){ TaskExecution listenerTaskExecution = getTaskExecutionCopy(taskExecution); List<TaskExecutionListener> startupListenerList = new ArrayList<>(this.taskExecutionListeners); if (!CollectionUtils.isEmpty(startupListenerList)) { try { Collections.reverse(startupListenerList); for (TaskExecutionListener taskExecutionListener : startupListenerList) { taskExecutionListener.onTaskStartup(listenerTaskExecution); } } catch (Throwable currentListenerException) { logger.error(currentListenerException); this.listenerFailed = true; this.taskExecution.setErrorMessage(currentListenerException.getMessage()); this.listenerException = currentListenerException; throw currentListenerException; } } 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 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 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."); } }