@Override public void abandon(long jobExecutionId) throws NoSuchJobExecutionException, JobExecutionIsRunningException, JobSecurityException { org.springframework.batch.core.JobExecution jobExecution = jobExplorer.getJobExecution(jobExecutionId); if(jobExecution == null) { throw new NoSuchJobExecutionException("Unable to retrieve JobExecution for id " + jobExecutionId); } if(jobExecution.isRunning()) { throw new JobExecutionIsRunningException("Unable to abandon a job that is currently running"); } jobExecution.upgradeStatus(BatchStatus.ABANDONED); jobRepository.update(jobExecution); }
@Override public final JobExecutionIsRunningException jobExecutionIsRunningException(final long jobExecutionId) { final JobExecutionIsRunningException result = new JobExecutionIsRunningException(String.format(getLoggingLocale(), jobExecutionIsRunningException$str(), jobExecutionId)); final StackTraceElement[] st = result.getStackTrace(); result.setStackTrace(Arrays.copyOfRange(st, 1, st.length)); return result; } private static final String jobExecutionAlreadyCompleteException = "JBERET000609: Job execution %s has already completed and cannot be restarted.";
@Override public void abandon(final long executionId) throws NoSuchJobExecutionException, JobExecutionIsRunningException, JobSecurityException { final InternalJobExecution jobEx = persistenceManagerService.jobOperatorGetJobExecution(executionId); // if it is not in STARTED or STARTING state, mark it as ABANDONED BatchStatus status = jobEx.getBatchStatus(); if (status == BatchStatus.STARTING || status == BatchStatus.STARTED) { throw new JobExecutionIsRunningException("Job Execution: " + executionId + " is still running"); } // update table to reflect ABANDONED state persistenceManagerService.updateBatchStatusOnly(jobEx.getExecutionId(), BatchStatus.ABANDONED, new Timestamp(System.currentTimeMillis())); // Don't forget to update JOBSTATUS table statusManagerService.updateJobBatchStatus(jobEx.getInstanceId(), BatchStatus.ABANDONED); }
@Override public void abandon(long executionId) throws NoSuchJobExecutionException, JobExecutionIsRunningException, JobSecurityException { if (isAuthorized(persistenceService.getJobInstanceIdByExecutionId(executionId))) { IJobExecution jobEx = persistenceService.jobOperatorGetJobExecution(executionId); // if it is not in STARTED or STARTING state, mark it as ABANDONED List<BatchStatus> runningStatusesList = Arrays.asList(new BatchStatus[] {BatchStatus.STARTED, BatchStatus.STARTING}); Set<BatchStatus> runningStatusesSet = Collections.unmodifiableSet(new HashSet<BatchStatus>(runningStatusesList)); if (!runningStatusesSet.contains(jobEx.getBatchStatus())) { // update table to reflect ABANDONED state long time = System.currentTimeMillis(); Timestamp timestamp = new Timestamp(time); persistenceService.updateBatchStatusOnly(jobEx.getExecutionId(), BatchStatus.ABANDONED, timestamp); logger.fine("Job Execution: " + executionId + " was abandoned"); // Don't forget to update JOBSTATUS table _jobStatusManagerService.updateJobBatchStatus(jobEx.getInstanceId(), BatchStatus.ABANDONED); } else { logger.warning("Job Execution: " + executionId + " is still running"); throw new JobExecutionIsRunningException("Job Execution: " + executionId + " is still running"); } } else { throw new JobSecurityException("The current user is not authorized to perform this operation"); } }
/** * {@inheritDoc} */ @Override public void abandon(long executionId) throws NoSuchJobExecutionException, JobExecutionIsRunningException, JobSecurityException { batchRoleCheck(); long jobInstanceId = getPersistenceManagerService().getJobInstanceIdFromExecutionId(executionId); if (authService != null) { authService.authorizedJobAbandonByInstance(jobInstanceId); } JobExecution jobEx = getPersistenceManagerService().getJobExecution(executionId); // if it is not in STARTED or STARTING state, mark it as ABANDONED List<BatchStatus> runningStatusesList = Arrays.asList(new BatchStatus[] { BatchStatus.STARTED, BatchStatus.STARTING }); Set<BatchStatus> runningStatusesSet = Collections.unmodifiableSet(new HashSet<BatchStatus>(runningStatusesList)); if (!runningStatusesSet.contains(jobEx.getBatchStatus())) { // update table to reflect ABANDONED state getPersistenceManagerService().updateJobExecutionAndInstanceOnStatusChange(jobEx.getExecutionId(), BatchStatus.ABANDONED, new Date()); logger.fine("Job Execution: " + executionId + " was abandoned"); } else { throw new JobExecutionIsRunningException("Job Execution: " + executionId + " is still running"); } publishEvent((WSJobExecution) jobEx, BatchEventsPublisher.TOPIC_EXECUTION_ABANDONED); }
@Override public void abandon(long jobExecutionId) throws NoSuchJobExecutionException, JobExecutionIsRunningException, JobSecurityException { org.springframework.batch.core.JobExecution jobExecution = jobExplorer.getJobExecution(jobExecutionId); if(jobExecution == null) { throw new NoSuchJobExecutionException("Unable to retrieve JobExecution for id " + jobExecutionId); } if(jobExecution.isRunning()) { throw new JobExecutionIsRunningException("Unable to abandon a job that is currently running"); } jobExecution.upgradeStatus(BatchStatus.ABANDONED); jobRepository.update(jobExecution); }
@Override public void abandon(long jobExecutionId) throws NoSuchJobExecutionException, JobExecutionIsRunningException, JobSecurityException { org.springframework.batch.core.JobExecution jobExecution = jobExplorer.getJobExecution(jobExecutionId); if(jobExecution == null) { throw new NoSuchJobExecutionException("Unable to retrieve JobExecution for id " + jobExecutionId); } if(jobExecution.isRunning()) { throw new JobExecutionIsRunningException("Unable to abandon a job that is currently running"); } jobExecution.upgradeStatus(BatchStatus.ABANDONED); jobRepository.update(jobExecution); }
@Override public void abandon(long jobExecutionId) throws NoSuchJobExecutionException, JobExecutionIsRunningException, JobSecurityException { org.springframework.batch.core.JobExecution jobExecution = jobExplorer.getJobExecution(jobExecutionId); if(jobExecution == null) { throw new NoSuchJobExecutionException("Unable to retrieve JobExecution for id " + jobExecutionId); } if(jobExecution.isRunning()) { throw new JobExecutionIsRunningException("Unable to abandon a job that is currently running"); } jobExecution.upgradeStatus(BatchStatus.ABANDONED); jobRepository.update(jobExecution); }
@Override public void abandon(long executionId) throws NoSuchJobExecutionException, JobExecutionIsRunningException, JobSecurityException { if (isAuthorized(persistenceService.getJobInstanceIdByExecutionId(executionId))) { IJobExecution jobEx = persistenceService.jobOperatorGetJobExecution(executionId); // if it is not in STARTED or STARTING state, mark it as ABANDONED if (!(jobEx.getBatchStatus().equals(BatchStatus.STARTED) || jobEx.getBatchStatus().equals(BatchStatus.STARTING))){ // update table to reflect ABANDONED state long time = System.currentTimeMillis(); Timestamp timestamp = new Timestamp(time); persistenceService.updateBatchStatusOnly(jobEx.getExecutionId(), BatchStatus.ABANDONED, timestamp); logger.fine("Job Execution: " + executionId + " was abandoned"); // Don't forget to update JOBSTATUS table _jobStatusManagerService.updateJobBatchStatus(jobEx.getInstanceId(), BatchStatus.ABANDONED); } else { logger.warning("Job Execution: " + executionId + " is still running"); throw new JobExecutionIsRunningException("Job Execution: " + executionId + " is still running"); } } else { throw new JobSecurityException("The current user is not authorized to perform this operation"); } }