ebx-shutdown-sdk
Listening for and responding gracefully to application shutdown is common boilerplate. Whilst it's possible for applications to directly monitor for SIGTERM signals:
Runtime.getRuntime().addShutdownHook(new Thread(() -> { ...
experience has shown it only takes one dependency to do this incorrectly for the entire application to close ungracefully. This SDK intends to provide an alternative way of guaranteeing graceful shutdowns.
ShutdownMonitoris an interface for requesting a shutdown,setShutdownRequested, and checking for if a shutdown has been requested,isShutdownRequested.ShutdownRequestedExceptionis provided as an optional way for handling resource cleanup during shutdown.
Implementations included are:
SimpleShutdownMonitor- Supports manual triggering only.WatchingShutdownMonitor(andWatchingShutdownMonitor.Builder) - ExtendsSimpleShutdownMonitor. Can also be configured to listen for a shutdown file (listenForShutdownFile) and SIGTERM (registerShutdownHook).
Installation
For our latest stable release use:
<dependency>
<groupId>com.echobox</groupId>
<artifactId>ebx-shutdown-sdk</artifactId>
<version>1.1.0</version>
</dependency>
Getting in touch
- GitHub Issues: If you have ideas, bugs, or problems with our library, just open a new issue.
Contributing
If you would like to get involved please follow the instructions here
Releases
We use semantic versioning.
All merges into DEV will automatically get released as a maven central snapshot, which can be easily included in any downstream dependencies that always desire the latest changes (see above for 'Most Up To Date' installation).
Each merge into the MASTER branch will automatically get released to Maven central and github releases, using the current library version. As such, following every merge to master, the version number of the dev branch should be incremented and will represent 'Work In Progress' towards the next release.
Please use a merge (not rebase) commit when merging dev into master to perform the release.
To create a full release to Maven central please follow these steps:
- Ensure the
CHANGELOG.mdis up to date with all the changes in the release, if not please raise a suitable PR intoDEV. Typically the change log should be updated as we go. - Create a PR from
DEVintoMASTER. Ensure the version in thepom.xmlis the correct version to be released. Merging this PR intoMASTERwill automatically create the maven and github releases. Please note that a release is final, it can not be undone/deleted/overwritten. - Once the public release has been successful create a final PR into
DEVthat contains an incrementedpom.xmlversion to ensure the correct snapshot gets updated on subsequent merges intoDEV. This PR should also include:- An update to the
README.mdlatest stable release version number. - A 'Work In Progress' entry for the next anticipated release in
CHANGELOG.md.
- An update to the