Skip to content

Releases: spring-projects/spring-batch

v6.0.0-RC1

22 Oct 21:10
c425c02

Choose a tag to compare

v6.0.0-RC1 Pre-release
Pre-release

⭐ New features

  • Add support for local chunking #5021
  • Add remote step execution support #5024
  • Add shutdown hook to gracefully stop job executions on sigterm #5028
  • Add support for Jackson 3 #4842
  • Support SEDA with Spring Integration MessageChannels #4719
  • Use existing ItemWriter with CompositeItemWriter expecting different item types #4735

🚀 Enhancements

  • Missing comma in StepExecution#getSummary #5025
  • Improve performance of DefaultFieldSet.indexOf() method #4930
  • Improve MessageChannelPartitionHandler::receiveReplies #4776

🐞 Bug fixes

  • Spring batch terminate in started status after sigterm #4023
  • Jdbc Hibernate Connection closed prematurly when launching a Job #5006
  • OptimisticLockingFailureException caused by jobExecutionDao.updateJobExecution(jobExecution) #5022
  • Missing GraalVM native image hints for StepContext.getJobParameters() #5041
  • StepBuilder(JobRepository) fails due to timing mismatch between constructor validation and BeanNameAware #5027
  • RecursiveCollectionLineAggregator.aggregate() fails on empty collection input #5023
  • Incorrect retrieval of last step execution with MongoDB #4896
  • Fix potential NPE in JdbcJobExecutionDao #5044

📖 Documentation updates

  • FaultTolerantStepBuilder#skipLimit Javadoc is misleading with custom skipPolicy #4963
  • Fix grammar error in testing documentation #4979
  • Improve javadoc of JobInstanceDao#getJobNames method #5043

🆙 Dependency Upgrades

  • Spring Framework: 7.0.0-RC1
  • Spring Integration: 7.0.0-RC1
  • Spring AMQP: 4.0.0-RC1
  • Spring Kafka: 4.0.0-RC1
  • Spring Data: 4.0.0-RC1
  • Spring Ldap: 4.0.0-RC1
  • Micrometer: 1.16.0-RC1

❤️ Contributors

Thank you to all the contributors who worked on this release!


Full change log: v6.0.0-M4...v6.0.0-RC1

v5.2.4

22 Oct 14:21
8f7c068

Choose a tag to compare

🐞 Bug fixes

  • Regression: Jdbc Hibernate connection closed prematurely when launching a Job #5006
  • Incorrect retrieval of last step execution with MongoDB #4896
  • RecursiveCollectionLineAggregator.aggregate() fails on empty collection input #5023
  • Missing GraalVM native image hints for Job/StepContext.getJobParameters() #5041

🚀 Enhancements

  • Improve type conversion in MessageChannelPartitionHandler#receiveReplies #4776
  • Improve performance of DefaultFieldSet#indexOf() method #4930
  • Missing comma in StepExecution#getSummary #5025

📔 Documentation

  • FaultTolerantStepBuilder#skipLimit Javadoc is misleading with custom skipPolicy #4963
  • Fix grammar error in testing documentation #4979
  • Improve javadoc of JobInstanceDao#getJobNames method #5043

🆙 Dependency Upgrades

  • Spring Framework: 6.2.12
  • Micrometer: 1.14.12
  • Spring Integration: 6.4.8
  • Spring AMQP: 3.2.8
  • Spring Data: 3.4.11
  • Spring Ldap: 3.2.15

❤️ Contributors

Thank you to all the contributors who contributed to this release!


Full change log: v5.2.3...v5.2.4

v6.0.0-M4

09 Oct 06:43
376d980

Choose a tag to compare

v6.0.0-M4 Pre-release
Pre-release

⭐ New features

  • Add ability to configure Mongo sequence incrementers #5018
  • Remove usage of Micrometer's global static meter registry #4968
  • Migrate to JSpecify annotations for nullability constraints #4673

🚀 Enhancements

  • Segregate StepLocator methods in a sub interface #5015
  • Move infrastructure APIs under a specific package #5014
  • Revisit exception declaration in public APIs #5013
  • Move built-in job parameter incrementers to the org.springframework.batch.core.job.parameters package #5011
  • Broken encapsulation of job parameter attributes #5010
  • Incorrect nullability definition in public APIs input #4989
  • Update retrieval methods with clear nullability semantics #4988
  • Incorrect default constructor in AbstractStep #4984
  • Documentation for disabling spring batch metrics is incomplete #4800
  • Make domain model entities immutable #1870

🐞 Bug fixes

  • Error in the metrics registration with a meter registry customization #4759
  • Activation of Actuator & Prometheus rise a WARN in the log due to bad configuration #4753

🔨 Tasks

  • Deprecate JobRepository#getStepExecution(long jobExecutionId, long stepExecutionId) #5007
  • Deprecate the batch XML namespace #4843
  • Deprecate JUnit 4 support #4816
  • Update Micrometer's Prometheus support to version 1.x #4689

❤️ Contributors

Thank you to all the contributors who worked on this release!


Full change log: v6.0.0-M3...v6.0.0-M4

v6.0.0-M3

17 Sep 11:51
59d4413

Choose a tag to compare

v6.0.0-M3 Pre-release
Pre-release

⭐ New features

  • Add support for observability with the Java Flight Recorder #4972
  • Add ability to externally stop any kind of step #4965
  • Revisit the concurrency model #4955
  • Make Job interface a functional interface #4966
  • Make Step interface a functional interface #4976
  • Add StepExecution parameter to StoppableTasklet.stop() #4703

🚀 Enhancements

  • Make JobRegistry optional in the default batch configuration #4971
  • Make transaction manager optional in JobOperatorFactoryBean #4970
  • Make transaction manager optional in Tasklet and Chunk-Oriented steps #4974

🐞 Bug fixes

  • Incorrect step execution id generation in ResourcelessJobRepository #4975
  • Conflicting info in @AfterChunk/@BeforeChunk annotation javadoc to current implementation #4961
  • RecordFieldSetMapper fails with Record without components #4900

🆙 Dependency Upgrades

  • Spring Framework: 7.0.0-M9
  • Spring Integration: 7.0.0-M3
  • Spring AMQP: 4.0.0-M5
  • Spring Kafka: 4.0.0-M5
  • Spring Data: 4.0.0-M6
  • Spring Ldap: 4.0.0-M3
  • Micrometer: 1.16.0-M3

❤️ Contributors

Thank you to all the contributors who worked on this release!


Full change log: v6.0.0-M2...v6.0.0-M3

v5.2.3

17 Sep 17:33
9e0e39e

Choose a tag to compare

🐞 Bug fixes

  • Incorrect step execution id generation in ResourcelessJobRepository #4975
  • RecordFieldSetMapper fails with Record without components #4900

🚀 Enhancements

  • Allow keys other than _id for primary key in MongoItemWriter #4812
  • Add Redis integration tests #4892
  • Remove unnecessary reflection in RemoteChunkHandlerFactoryBean #4839
  • Mark argument to ExitStatus#equals as nullable #4823
  • Use typesafe variant of ctx::getBean instead #4803
  • Use jdbcTemplate.queryForStream().findFirst() where appropriate #4802
  • Reuse existing SQL where feasible #4801
  • Improve performance of JdbcStepExecutionDao::getStepExecution #4799
  • Add optimistic locking for meta-data deletion #4793
  • Improve update sql for optimistic locking #4792
  • Polish SynchronizationManagerSupport to use Map::computeIfAbsent #4786
  • Refactor ExitStatus#isRunning for type-safety #4783
  • FlatFileItemReaderBuilder : raise check exception on build #4757

📔 Documentation

  • Fix javadoc in JdbcCursorItemReaderBuilder #4838
  • Polish code block style and fix typo in whatsnew.adoc #4901
  • Correct comment in RemoteChunkingJobFunctionalTests #4822

🆙 Dependency Upgrades

  • Spring Framework: 6.2.11
  • Spring Retry: 2.0.12
  • Micrometer: 1.14.11
  • Spring Integration: 6.4.7
  • Spring AMQP: 3.2.7
  • Spring Kafka: 3.3.10
  • Spring Data: 3.4.10
  • Spring Ldap: 3.2.14

❤️ Contributors

Thank you to all the contributors who contributed to this release!


Full change log: v5.2.2...v5.2.3

v6.0.0-M2

20 Aug 13:41
bd532ae

Choose a tag to compare

v6.0.0-M2 Pre-release
Pre-release

⭐ New features

  • Add API to recover failed job executions #4876

🚀 Enhancements

  • Revisit the chunk-oriented processing model implementation #3950
  • Allow a StepInterruptionPolicy to be injected through the step builder #1641

🐞 Bug fixes

  • Build failure with GraalVM 24 #4937

🆙 Dependency Upgrades

  • Spring Framework: 7.0.0-M8
  • Spring Integration: 7.0.0-M2
  • Spring AMQP: 4.0.0-M4
  • Spring Kafka: 4.0.0-M4
  • Spring Data: 4.0.0-M5
  • Spring Ldap: 4.0.0-M2
  • Micrometer: 1.16.0-M2

❤️ Contributors

Thank you to all the contributors who worked on this release:

@thelightway24


Full change log: v6.0.0-M1...v6.0.0-M2

v6.0.0-M1

23 Jul 14:04
817a997

Choose a tag to compare

v6.0.0-M1 Pre-release
Pre-release

This is the first milestone of Spring Batch 6.0, which is a major release that comes with several new features, enhancements, and bug fixes. Moreover, this release introduces a number of API breaking changes and deprecations. Please refer to the migration guide for the full list of changes.

⭐ New features

  • Introduce a modern command line batch operator #4899
  • Add ability to use bean names for jobs and steps #4858
  • Make MapJobRegistry smart enough to auto register jobs defined in the application context #4855
  • Make MessageChannelPartitionHandler usable with any job repository implementations #4917
  • Add optimistic locking for meta-data deletion #4793

🚀 Enhancements

  • Improve experience when configuring an alternative JobRepository #4718
  • Improve performance of JdbcStepExecutionDao::getStepExecution #4799
  • Improve update sql for optimistic locking #4792
  • Improve JobOperator API by using domain types instead of primitive types #4845
  • Improve JobOperator by reducing its scope to job operations only #4833
  • Core API simplification #4847
  • Move core APIs in dedicated packages #4877
  • Move listener APIs under core.listener package #4867
  • Move core.explore package under core.repository #4827
  • Move core partitioning APIs under org.springframework.batch.core.partition #4849
  • Move DAOs implementations to separate packages #4848
  • Remove unnecessary generic from JobKeyGenerator interface #4886
  • Remove usage of JobFactory in `JobRegistry`` #4854
  • Remove dependency to JobExplorer in SimpleJobOperator #4817
  • Remove JobExplorer bean registration from the default batch configuration #4825
  • Remove unnecessary reflection in RemoteChunkHandlerFactoryBean #4839
  • Rename SimpleJobOperator to TaskExecutorJobOperator #4834
  • Rename JobRepositoryFactoryBean to JdbcJobRepositoryFactoryBean #4829
  • FlatFileItemReaderBuilder : raise check exception on build #4757
  • Make JobOperator extend JobLauncher #4832
  • Make JobRepository extend JobExplorer #4824
  • Redundant methods in JobExplorer/JobInstanceDao APIs #4821
  • Introduce ErrorProne, fix compiler warnings #4807
  • Add Redis integration tests #4892
  • Fail test if no exception is thrown in testErrorMessageWhenNoLineTokenizerWasProvided #4883
  • Refactor AOT proxy hints for better type safety #4881
  • Refactor ExitStatus#isRunning for type-safety #4783
  • Mark argument to ExitStatus#equals as nullable #4823
  • Use typesafe variant of ctx::getBean instead #4803
  • Use jdbcTemplate.queryForStream().findFirst() where appropriate #4802
  • Reuse existing SQL where feasible #4801

🐞 Bug fixes

  • Incorrect warning when starting a job with an empty parameters set #4914
  • Incorrect handling of job parameters when using a JobParametersIncrementer #4910
  • Write Skip Count Not Updated in Chunk Processing #4514

📔 Documentation

  • Polish code block style and fix typo in whatsnew.adoc #4901
  • Fix javadoc in JdbcCursorItemReaderBuilder #4838
  • Correct comment in RemoteChunkingJobFunctionalTests #4822

🔨 Tasks

  • Replace usage of JobExplorer with JobRepository in RemoteStepExecutionAggregator #4928
  • Replace usage of JobExplorer with JobRepository in SystemCommandTasklet #4927
  • Replace usage of JobLauncher with JobOperator in JobLaunchingGateway and JobLaunchingMessageHandler #4924
  • Replace usage of JobLauncher with JobOperator in JobStep #4923
  • Replace usage of JobExplorer with JobRepository in StepExecutionRequestHandler #4918
  • Rename JobLauncherTestUtils to JobOperatorTestUtils #4920
  • Rename JobExplorerFactoryBean to JdbcJobExplorerFactoryBean #4846
  • Deprecate StepRunner #4921
  • Deprecate modular job configuration through EnableBatchProcessing #4866
  • Remove usage of JobExplorer in BatchIntegrationConfiguration #4919
  • Remove deprecated APIs scheduled for removal in v6 #4819
  • Update GraalVM runtime hints #4844

🆙 Dependency Upgrades

  • Spring Framework: 7.0.0-M7
  • Spring Integration: 7.0.0-M1
  • Spring AMQP: 4.0.0-M3
  • Spring Kafka: 4.0.0-M3
  • Spring Data: 4.0.0-M4
  • Spring Ldap: 4.0.0-M1
  • Spring Retry: 2.0.12
  • Micrometer: 1.16.0-M1

❤️ Contributors

Thank you to all the contributors who worked on this release:

@darth-raijin, @itis821, @jbotuck, @martinfrancois, @noojung, @patrickwinti, @quaff, @scordio, @sieunie, @sjiwon, and @therepanic


Full change log: v5.2.2...v6.0.0-M1

v5.2.2

19 Mar 15:33
503adc2

Choose a tag to compare

🐞 Bug fixes

  • SynchronizeStatus in MongoJobExecutionDao is not upgrading the status of the JobExecution #4760
  • @SpringBatchTest with JUnit @Nested triggers new test context creation #4738
  • ExecutionContext dirty flag does not remain true when null is put for a non-existent key #4692
  • ExecutionContext dirty flag is reset by a new put #4685
  • MultiResourceItemWriter creates files with varying line count #1722
  • Fix index creation statements in MongoDB DDL script #4758
  • Attempt to close all delegate readers even when some fail #4764
  • Attempt to close all delegate writers even when some fail #4750

🚀 Enhancements

  • Add AOT runtime hints for infrastructure artifacts #4785
  • Add AOT runtime hints for core listeners #4769
  • Use Files.delete() for better error reporting #4775
  • Fix variable usage in ScriptItemProcessorTests and include script engine test dependencies #4678
  • Add @FunctionalInterface to ChunkProcessor #4773

📔 Documentation

  • Update usage of deprecated StepExecutionListenerSupport in documention #4784
  • Fix typo in Javadocs of FlatFileItemWriterBuilder#name(String) #4781
  • Fix incorrect Javadocs in remote partitioning setup builders #4778
  • Fix wrong statement in Javadoc of SimplePartitioner #4772
  • Fix typo in intercepting-execution.adoc #4766
  • Remove outdated AssertFile usage in section "Validating Output Files" of the reference documentation #4754

🆙 Dependency Upgrades

  • Spring Framework: 6.2.4
  • Spring Retry: 2.0.11
  • Micrometer: 1.14.5
  • Spring Integration: 6.4.3
  • Spring AMQP: 3.2.4
  • Spring Kafka: 3.3.4
  • Spring Data: 3.4.4
  • Spring Ldap: 3.2.11

❤️ Contributors

Thank you to all the contributors who contributed to this release:

@charlie881007, @GGHDMS, @neoludo, @elimelec, @hpoettker, @pongdangx2, @quaff, @scordio, @yeonnex, and @yoseplee


Full change log: v5.2.1...v5.2.2

v5.1.3

19 Dec 03:00
814f686

Choose a tag to compare

Heads-up: ❗This is the last OSS release of the 5.1.x line ❗Please check the support page.

⭐ New features

  • Add DatabaseType POSTGRES for the product name EnterpriseDB #4627

🚀 Enhancements

  • Bad performance of GET_LAST_STEP_EXECUTION query on DB2 with large STEP_EXECUTION table #4657
  • Missing @FunctionalInterface in JobKeyGenerator #4613

🐞 Bug fixes

  • Different behavior when interrupting a job, depending on the parallel flow order #3939
  • MongoPagingItemReader never reset page number #1086
  • Job restart after stop fails #1287
  • Wrong column types in JdbcStepExecutionDao #4648

📔 Documentation

  • Grammatical error in restart.adoc #4600
  • Typo in architecture doc #4607
  • Typo in the documentation chapter Spring Batch Integration #4649
  • Missing documentation about MultiResourceItemWriter not creating empty files when no data goes through delegates #4645
  • Missing note about not scoping Step beans with Job scope #3900
  • Unclear documentation about wildcard usage to select input files #4707
  • Regression in Javadoc deployment path with 5.1.2 #4604

🆙 Dependency Upgrades

  • Spring Framework: 6.1.16
  • Spring Retry: 2.0.11
  • Micrometer: 1.12.12
  • Spring Integration: 6.2.11
  • Spring AMQP: 3.1.8
  • Spring Kafka: 3.1.10
  • Spring Data: 3.2.12
  • Spring Ldap: 3.2.9

❤️ Contributors

Thank you to all the contributors who worked on this release!

v5.2.1

18 Dec 20:39
a8a458f

Choose a tag to compare

🐞 Bug fixes

  • JobExecution#getJobExecution(@Nullable Long executionId) returns null when using MongoDB as JobExplorer #4722
  • Different behavior when interrupting a job, depending on the parallel flow order #3939
  • MongoPagingItemReader never reset page number #1086
  • DerbyPagingQueryProvider remaining pages query is not correct #1253
  • Job restart after stop fails #1287

🚀 Enhancements

  • Update DerbyPagingQueryProvider for Derby 10.7 and above #1673

📔 Documentation

  • Missing note about not scoping Step beans with Job scope #3900
  • Repeating 'the the' exists #4615
  • Unclear documentation about wildcard usage to select input files #4707
  • Incorrect class name and grammatical error in docs whats-new #4720
  • Fix link section #4696
  • Error in Migration guide #4695
  • Incorrect link and closing tag for listeners in documentation #4610

🆙 Dependency Upgrades

  • Spring Framework: 6.2.1
  • Spring Retry: 2.0.11
  • Micrometer: 1.14.2
  • Spring Integration: 6.4.1
  • Spring AMQP: 3.2.1
  • Spring Kafka: 3.3.1
  • Spring Data: 3.4.1
  • Spring Ldap: 3.2.9

🔨 Tasks

  • Deprecate SqlWindowingPagingQueryProvider #4733

❤️ Contributors

Thank you to all the contributors who worked on this release:

@Seungpang, @Solodye, @ngocnhan-tran1996, @uli-f, and @xeounxzxu