Refine search
org.springframework.batch.core.JobInstance jobInstance = jobRepository.createJobInstance(jobNames[0], jobParameters); jobExecution = jobRepository.createJobExecution(jobInstance, jobParameters, jobConfigurationLocation); } catch (Exception e) { throw new JobStartException(e); if(jobRegistry.exists(jobExecution.getId())) { jobRegistry.remove(jobExecution); jobExecution.upgradeStatus(BatchStatus.FAILED); if (jobExecution.getExitStatus().equals(ExitStatus.UNKNOWN)) { jobExecution.setExitStatus(ExitStatus.FAILED.addExitDescription(e)); jobRepository.update(jobExecution);
@Test public void testTaskExecutorRejects() throws Exception { final List<String> list = new ArrayList<>(); jobLauncher.setTaskExecutor(new TaskExecutor() { @Override public void execute(Runnable task) { list.add("execute"); throw new TaskRejectedException("Planned failure"); } }); JobExecution jobExecution = new JobExecution((JobInstance) null, (JobParameters) null); when(jobRepository.getLastJobExecution(job.getName(), jobParameters)).thenReturn(null); when(jobRepository.createJobExecution(job.getName(), jobParameters)).thenReturn(jobExecution); jobRepository.update(jobExecution); jobLauncher.afterPropertiesSet(); try { jobLauncher.run(job, jobParameters); } finally { assertEquals(BatchStatus.FAILED, jobExecution.getStatus()); assertEquals(ExitStatus.FAILED.getExitCode(), jobExecution.getExitStatus().getExitCode()); } assertEquals(1, list.size()); }
@Test public void testStepAlreadyComplete() throws Exception { stepExecution1.setStatus(BatchStatus.COMPLETED); jobRepository.add(stepExecution1); jobExecution.setEndTime(new Date()); jobRepository.update(jobExecution); jobExecution = jobRepository.createJobExecution(job.getName(), jobParameters); job.execute(jobExecution); assertEquals(0, jobExecution.getFailureExceptions().size()); assertEquals(1, jobExecution.getStepExecutions().size()); assertEquals(stepExecution2.getStepName(), jobExecution.getStepExecutions().iterator().next().getStepName()); }
private StepExecution execute(Step step) throws Exception { JobExecution jobExecution = jobRepository.createJobExecution( "job" + Math.random(), new JobParameters()); StepExecution stepExecution = jobExecution.createStepExecution("step"); jobRepository.add(stepExecution); step.execute(stepExecution); return stepExecution; }
protected void runStep(Step step) throws JobExecutionAlreadyRunningException, JobRestartException, JobInstanceAlreadyCompleteException, JobInterruptedException { JobExecution jobExecution = repository.createJobExecution("job1", new JobParameters()); stepExecution = new StepExecution("step1", jobExecution); repository.add(stepExecution); step.execute(stepExecution); }
private void run(ExitStatus exitStatus) throws Exception { JobExecution jobExecution = new JobExecution((JobInstance) null, (JobParameters) null); when(jobRepository.getLastJobExecution(job.getName(), jobParameters)).thenReturn(null); when(jobRepository.createJobExecution(job.getName(), jobParameters)).thenReturn(jobExecution); jobLauncher.afterPropertiesSet(); try { jobLauncher.run(job, jobParameters); } finally { assertEquals(exitStatus, jobExecution.getExitStatus()); } }
String restartStep = null; if (lastStepExecution == null) { jobExecution.getExecutionContext().put("batch.startedStep", step.getName()); stepStatus = BatchStatus.STARTING; if(lastJobExecution.getExecutionContext().containsKey("batch.restartStep")) { restartStep = lastJobExecution.getExecutionContext().getString("batch.restartStep"); if(CollectionUtils.isEmpty(jobExecution.getStepExecutions()) && lastJobExecution.getStatus() == BatchStatus.STOPPED && StringUtils.hasText(restartStep)) { if (getJobRepository().getStepExecutionCount(jobExecution.getJobInstance(), step.getName()) < step.getStartLimit()) {
JobExecution lastExecution = jobRepository.getLastJobExecution(job.getName(), jobParameters); if (lastExecution != null) { if (!job.isRestartable()) { for (StepExecution execution : lastExecution.getStepExecutions()) { BatchStatus status = execution.getStatus(); if (status.isRunning() || status == BatchStatus.STOPPING) { jobExecution = jobRepository.createJobExecution(job.getName(), jobParameters); jobExecution.upgradeStatus(BatchStatus.FAILED); if (jobExecution.getExitStatus().equals(ExitStatus.UNKNOWN)) { jobExecution.setExitStatus(ExitStatus.FAILED.addExitDescription(e)); jobRepository.update(jobExecution);
@Override public JobExecution run(final Job job, JobParameters jobParameters) throws JobExecutionAlreadyRunningException, JobRestartException, JobInstanceAlreadyCompleteException, JobParametersInvalidException { if (!job.isRestartable()) { JobParameters originalParameters = jobParameters; while (this.jobRepository.isJobInstanceExists(job.getName(), jobParameters)) { // check if batch job is still running or was completed already // analogous to SimpleJobRepository#createJobExecution JobExecution jobExecution = this.jobRepository.getLastJobExecution(job.getName(), jobParameters); if (jobExecution.isRunning()) { throw new JobExecutionAlreadyRunningException("A job execution for this job is already running: " + jobExecution.getJobInstance()); } BatchStatus status = jobExecution.getStatus(); if (status == BatchStatus.COMPLETED || status == BatchStatus.ABANDONED) { throw new JobInstanceAlreadyCompleteException("A job instance already exists and is complete for parameters=" + originalParameters + ". If you want to run this job again, change the parameters."); } // if there is a NullPointerException executing the following statement // there has not been a JobParametersIncrementer set for the job jobParameters = job.getJobParametersIncrementer().getNext(jobParameters); } } return super.run(job, jobParameters); }
@Test public void testSplitJob() throws Exception { assertNotNull(job); JobExecution jobExecution = jobRepository.createJobExecution(job.getName(), new JobParameters()); job.execute(jobExecution); assertEquals(BatchStatus.COMPLETED, jobExecution.getStatus()); assertEquals(4, jobExecution.getStepExecutions().size()); ArrayList<String> names = new ArrayList<>(((StepLocator) job).getStepNames()); Collections.sort(names); assertEquals("[s1, s2, s3, s4]", names.toString()); }
@Test public void testAbort() throws Exception { JobInstance jobInstance = new JobInstance(123L, job.getName()); JobExecution jobExecution = new JobExecution(jobInstance, 111L, jobParameters, null); jobExecution.setStatus(BatchStatus.STOPPING); when(jobExplorer.getJobExecution(123L)).thenReturn(jobExecution); jobRepository.update(jobExecution); jobOperator.abandon(123L); assertEquals(BatchStatus.ABANDONED, jobExecution.getStatus()); assertNotNull(jobExecution.getEndTime()); }
String jobName = job.getName(); JobParameters parameters = jobParameters; boolean jobInstanceExists = this.taskJobRepository.isJobInstanceExists(jobName, parameters); if (jobInstanceExists) { JobExecution lastJobExecution = this.taskJobRepository .getLastJobExecution(jobName, jobParameters); if (lastJobExecution != null && isStoppedOrFailed(lastJobExecution) && job.isRestartable()) { JobParameters previousParameters = lastJobExecution.getJobParameters(); if (execution.getStatus().equals(BatchStatus.FAILED)) { throwJobFailedException(Collections.singletonList(execution));
@Test public void testAbandonRoseyScenario() throws Exception { JobExecution jobExecution = new JobExecution(5L); jobExecution.setEndTime(new Date()); when(jobExplorer.getJobExecution(5L)).thenReturn(jobExecution); jsrJobOperator.abandon(5L); ArgumentCaptor<JobExecution> executionCaptor = ArgumentCaptor.forClass(JobExecution.class); verify(jobRepository).update(executionCaptor.capture()); assertEquals(org.springframework.batch.core.BatchStatus.ABANDONED, executionCaptor.getValue().getStatus()); }
@Override public StepExecution doInTransaction(TransactionStatus status) { return jobRepository.getLastStepExecution(jobExecution.getJobInstance(), step.getName()); } });
@Override public void execute(JobExecution execution) throws UnexpectedJobExecutionException { assertEquals(1, execution.getJobParameters().getParameters().size()); execution.setStatus(BatchStatus.FAILED); execution.setEndTime(new Date()); jobRepository.update(execution); throw new RuntimeException("FOO"); } @Override
private void testConfigurationClass(Class<?> clazz) throws Exception { GenericApplicationContext context = new AnnotationConfigApplicationContext(clazz); this.jobLauncher = context.getBean(JobLauncher.class); this.jobRepository = context.getBean(JobRepository.class); this.job = context.getBean(Job.class); this.jobExplorer = context.getBean(JobExplorer.class); JobExecution jobExecution = jobLauncher.run(job, new JobParameters()); assertEquals(BatchStatus.COMPLETED, jobExecution.getStatus()); JobExecution repositoryJobExecution = jobRepository.getLastJobExecution(job.getName(), new JobParameters()); assertEquals(jobExecution.getId(), repositoryJobExecution.getId()); assertEquals("job", jobExplorer.getJobNames().iterator().next()); context.close(); }
private boolean isStepRestart(Step step) { int count = jobRepository.getStepExecutionCount(execution.getJobInstance(), step.getName()); return count > 0; }
@Test public void testHandlerRefStep() throws Exception { assertNotNull(job2); JobExecution jobExecution = jobRepository.createJobExecution(job2.getName(), new JobParameters()); job2.execute(jobExecution); assertEquals(BatchStatus.COMPLETED, jobExecution.getStatus()); Collections.sort(savedStepNames); assertEquals("[s2:partition0, s2:partition1, s2:partition2, s3]", savedStepNames.toString()); List<String> stepNames = getStepNames(jobExecution); assertEquals(5, stepNames.size()); assertEquals("[s2, s2:partition0, s2:partition1, s2:partition2, s3]", stepNames.toString()); }
@Test public void testFindOrCreateJobWithExecutionContext() throws Exception { job.setName("foo"); int before = 0; JobExecution execution = repository.createJobExecution(job.getName(), new JobParameters()); execution.getExecutionContext().put("foo", "bar"); repository.updateExecutionContext(execution); int after = jdbcTemplate.queryForObject("SELECT COUNT(*) FROM BATCH_JOB_EXECUTION_CONTEXT", Integer.class); assertEquals(before + 1, after); assertNotNull(execution.getId()); JobExecution last = repository.getLastJobExecution(job.getName(), new JobParameters()); assertEquals(execution, last); assertEquals(execution.getExecutionContext(), last.getExecutionContext()); }
@Override public StepExecution handleStep(Step step, JobExecution execution) throws JobInterruptedException, JobRestartException, StartLimitExceededException { if (execution.isStopping()) { throw new JobInterruptedException("JobExecution interrupted."); JobInstance jobInstance = execution.getJobInstance(); StepExecution lastStepExecution = jobRepository.getLastStepExecution(jobInstance, step.getName()); if (stepExecutionPartOfExistingJobExecution(execution, lastStepExecution)) { currentStepExecution = execution.createStepExecution(step.getName()); jobRepository.add(currentStepExecution); jobRepository.updateExecutionContext(execution);