Add status checks in CommandLineJobOperator by ch200203 · Pull Request #5058 · spring-projects/spring-batch
public int restart(long jobExecutionId) { logger.info(() -> "Restarting job execution with ID: " + jobExecutionId); try { JobExecution jobExecution = this.jobRepository.getJobExecution(jobExecutionId); if (jobExecution == null) { logger.error(() -> "No job execution found with ID: " + jobExecutionId); return JVM_EXITCODE_GENERIC_ERROR; } BatchStatus status = jobExecution.getStatus(); if (status != BatchStatus.FAILED && status != BatchStatus.STOPPED) { logger.error(() -> "Cannot restart job execution " + jobExecutionId + ": current status is " + status + " (must be FAILED or STOPPED)."); return JVM_EXITCODE_GENERIC_ERROR; } JobExecution restartedExecution = this.jobOperator.restart(jobExecution); return this.exitCodeMapper.intValue(restartedExecution.getExitStatus().getExitCode()); } catch (Exception e) { return JVM_EXITCODE_GENERIC_ERROR; } } public int abandon(long jobExecutionId) { logger.info(() -> "Abandoning job execution with ID: " + jobExecutionId); try { JobExecution jobExecution = this.jobRepository.getJobExecution(jobExecutionId); if (jobExecution == null) { logger.error(() -> "No job execution found with ID: " + jobExecutionId); return JVM_EXITCODE_GENERIC_ERROR; } BatchStatus status = jobExecution.getStatus(); if (status != BatchStatus.STOPPED) { logger.error(() -> "Cannot abandon job execution " + jobExecutionId + ": current status is " + status + " (must be STOPPED)."); return JVM_EXITCODE_GENERIC_ERROR; } JobExecution abandonedExecution = this.jobOperator.abandon(jobExecution); return this.exitCodeMapper.intValue(abandonedExecution.getExitStatus().getExitCode()); } catch (Exception e) { return JVM_EXITCODE_GENERIC_ERROR; } }