All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Added support for Spring Boot 3.4.
- Dropped support for Spring Boot 3.2.
- Environment specific configuration. Test environment has now configured automatically to have fast shutdown.
- Delay before we announce service as healthy.
- Added support for spring boot 3.3
- Check termination status for
TaskSchedulerRouter
instances correctly.
- Add support for Spring Boot 3.2 and bump some dependencies.
- In Spring Boot 3.2 logic for assigning a scheduler for executing
@Scheduled
annotated methods changed, so needed to refactored auto configuration and shutdown logic ofTaskSchedulersGracefulShutdownStrategy
to always ask theScheduledTaskRegistrar
for the actualTaskScheduler
before shutting it down. - Add support for
TaskSchedulerRouter
inTaskSchedulersGracefulShutdownStrategy
- In Spring Boot 3.2 logic for assigning a scheduler for executing
- Support for Spring Boot 3.1
- Build against Spring Boot 3.0.6 --> 3.0.7
- Build against Spring Boot 2.7.11 --> 2.7.13
- Build against Spring Boot 2.6.14 --> 2.6.15
- Potential circular dependencies between custom strategies and strategies' registry.
- A bug, where we tried to sort an immutable list, when ordering strategies.
- Changed they way how strategies are found. Now, if there are circular dependencies, the application context starts to fail. We will also validate, just in case, if the strategies set will change between bean initializations and application startup.
- Application events are not used anymore, and we rely just on
SmartLifeCycleBean
. Application events based code was needed for some reason in Spring Boot 1.3. Due tospring-cloud
creating multiple application contexts or something like that.
- Do not enable
ExecutorServiceGracefulShutdownStrategy
by default. - Allow users to disable resources from being managed by graceful shutdown using
@GracefulShutdownIgnore
annotation
- Fix for
UnboundConfigurationPropertiesException
when one of the autocofiguration conditional flag properties were set explicitly. e.g.health-indicator.enabled: true
orrequest-count-strategy.enabled: true
- Support for Spring Boot 3
-
Matrix tests are now testing against:
- Spring Boot 3.0
- Spring Boot 2.7
- Spring Boot 2.6
-
Request Count filter starts rejecting new calls after client reaction timeout has passed.
- Matrix tests for:
- Spring Boot 2.5
- Spring Boot 2.4
- Refactor TaskSchedulersGracefulShutdownStrategy. Now it wait for published tasks to finish and force shutdown on timeout.
- Added strategy for graceful shutdown of ExecutorServices
- Fix IllegalAccessException on shutting down Executors defined as private class
- Adds autocomplete support with spring boot configuration processor
- Wrong counter handling prevented Scheduled Tasks strategy to announce that shutdown can continue. Basically in some scenarios the counter got a negative value failing ==0 check at the end.
- Supporting Spring scheduling graceful shutdown for more exotic configurations.
- Added strategy for graceful shutdown of spring task scheduler beans. The ones, handling Scheduled annotation, for example.
- Added strategy for graceful shutdown of db-scheduler beans
- use
compareAndSet
to avoidstop
from executing twice in GracefulShutdowner
- Moved from JDK 8 to JDK 11.
- Starting to push to Maven Central again.
- Graceful shutdown strategies can override
ready
method to signal if they are ready to accept traffic.
- Strategies are now executed in order specified by Spring's bean ordering system.
Please consult with
org.springframework.core.annotation.Order
how you can specify that order.
applicationStarted
hooks for strategies are called in the Spring's order.
Shutdown hooks for strategies are called in the reverse order.
Custom order can be used as well, by overriding DefaultGracefulShutdownStrategiesRegistry
bean.
- Spring Boot version from 2.1.5.RELEASE to 2.3.7.RELEASE
- Spring Cloud
- EurekaGracefulShutdownStrategy
- QuartzGracefulShutdownStrategy
- The auto configurator can now work when
javax.servlet.Filter
is not in classpath. - The auto configurator can now work when
org.springframework.boot.actuate.health.AbstractHealthIndicator
is not in classpath.