@@ -86,14 +86,15 @@ void incrementExistingExecution() {
8686 this .contextRunner .run ((context ) -> {
8787 JobLauncherApplicationRunnerContext jobLauncherContext = new JobLauncherApplicationRunnerContext (context );
8888 Job job = jobLauncherContext .configureJob ().incrementer (new RunIdIncrementer ()).build ();
89- jobLauncherContext .runner .execute (job , new JobParameters ());
90- jobLauncherContext .runner .execute (job , new JobParameters ());
89+ JobParameters jobParameters = new JobParametersBuilder ().addString ("name" , "foo" ).toJobParameters ();
90+ jobLauncherContext .runner .execute (job , jobParameters );
91+ jobLauncherContext .runner .execute (job , jobParameters );
9192 assertThat (jobLauncherContext .jobInstances ()).hasSize (2 );
9293 });
9394 }
9495
9596 @ Test
96- void retryFailedExecution () {
97+ void retryFailedExecutionWithIncrementer () {
9798 this .contextRunner .run ((context ) -> {
9899 PlatformTransactionManager transactionManager = context .getBean (PlatformTransactionManager .class );
99100 JobLauncherApplicationRunnerContext jobLauncherContext = new JobLauncherApplicationRunnerContext (context );
@@ -102,7 +103,23 @@ void retryFailedExecution() {
102103 .incrementer (new RunIdIncrementer ())
103104 .build ();
104105 jobLauncherContext .runner .execute (job , new JobParameters ());
105- jobLauncherContext .runner .execute (job , new JobParametersBuilder ().addLong ("run.id" , 1L ).toJobParameters ());
106+ jobLauncherContext .runner .execute (job , new JobParameters ());
107+ // with an incrementer, we always create a new job instance
108+ assertThat (jobLauncherContext .jobInstances ()).hasSize (2 );
109+ });
110+ }
111+
112+ @ Test
113+ void retryFailedExecutionWithoutIncrementer () {
114+ this .contextRunner .run ((context ) -> {
115+ PlatformTransactionManager transactionManager = context .getBean (PlatformTransactionManager .class );
116+ JobLauncherApplicationRunnerContext jobLauncherContext = new JobLauncherApplicationRunnerContext (context );
117+ Job job = jobLauncherContext .jobBuilder ()
118+ .start (jobLauncherContext .stepBuilder ().tasklet (throwingTasklet (), transactionManager ).build ())
119+ .build ();
120+ JobParameters jobParameters = new JobParametersBuilder ().addLong ("run.id" , 1L ).toJobParameters ();
121+ jobLauncherContext .runner .execute (job , jobParameters );
122+ jobLauncherContext .runner .execute (job , jobParameters );
106123 assertThat (jobLauncherContext .jobInstances ()).hasSize (1 );
107124 });
108125 }
@@ -134,17 +151,14 @@ void retryFailedExecutionOnNonRestartableJob() {
134151 Job job = jobLauncherContext .jobBuilder ()
135152 .preventRestart ()
136153 .start (jobLauncherContext .stepBuilder ().tasklet (throwingTasklet (), transactionManager ).build ())
137- .incrementer (new RunIdIncrementer ())
138154 .build ();
139- jobLauncherContext .runner .execute (job , new JobParameters ());
140- jobLauncherContext .runner .execute (job , new JobParameters ());
141- // A failed job that is not restartable does not re-use the job params of
142- // the last execution, but creates a new job instance when running it again.
143- assertThat (jobLauncherContext .jobInstances ()).hasSize (2 );
155+ JobParameters jobParameters = new JobParametersBuilder ()
156+ .addString ("name" , "foo" ).toJobParameters ();
157+ jobLauncherContext .runner .execute (job , jobParameters );
158+ assertThat (jobLauncherContext .jobInstances ()).hasSize (1 );
144159 assertThatExceptionOfType (JobRestartException .class ).isThrownBy (() -> {
145160 // try to re-run a failed execution
146- jobLauncherContext .runner .execute (job ,
147- new JobParametersBuilder ().addLong ("run.id" , 1L ).toJobParameters ());
161+ jobLauncherContext .runner .execute (job , jobParameters );
148162 fail ("expected JobRestartException" );
149163 }).withMessageContaining ("JobInstance already exists and is not restartable" );
150164 });
@@ -157,9 +171,8 @@ void retryFailedExecutionWithNonIdentifyingParameters() {
157171 JobLauncherApplicationRunnerContext jobLauncherContext = new JobLauncherApplicationRunnerContext (context );
158172 Job job = jobLauncherContext .jobBuilder ()
159173 .start (jobLauncherContext .stepBuilder ().tasklet (throwingTasklet (), transactionManager ).build ())
160- .incrementer (new RunIdIncrementer ())
161174 .build ();
162- JobParameters jobParameters = new JobParametersBuilder ().addLong ("id" , 1L , false )
175+ JobParameters jobParameters = new JobParametersBuilder ().addLong ("run. id" , 1L , true )
163176 .addLong ("foo" , 2L , false )
164177 .toJobParameters ();
165178 jobLauncherContext .runner .execute (job , jobParameters );
@@ -200,7 +213,7 @@ static class JobLauncherApplicationRunnerContext {
200213 this .jobBuilder = new JobBuilder ("job" , jobRepository );
201214 this .job = this .jobBuilder .start (this .step ).build ();
202215 this .jobRepository = context .getBean (JobRepository .class );
203- this .runner = new JobLauncherApplicationRunner (jobOperator , jobRepository );
216+ this .runner = new JobLauncherApplicationRunner (jobOperator );
204217 }
205218
206219 List <JobInstance > jobInstances () {
0 commit comments