From 681e6be9deb91e7d4ad30ad7ca6b81f4269fd600 Mon Sep 17 00:00:00 2001 From: Norman Ma Date: Wed, 19 Feb 2025 11:00:56 +0000 Subject: [PATCH] APPENG-1147: Log shutdown signal received with signal handler --- CHANGELOG.md | 5 +++++ .../common/gracefulshutdown/GracefulShutdowner.java | 8 ++++++++ gradle.properties | 2 +- 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7c70a4b..82abd5c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,11 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [2.15.2] - 2025-02-19 + +### Added +* Added logging for shutdown signals received. + ## [2.15.1] - 2024-12-05 ### Changed diff --git a/core/src/main/java/com/transferwise/common/gracefulshutdown/GracefulShutdowner.java b/core/src/main/java/com/transferwise/common/gracefulshutdown/GracefulShutdowner.java index 4a85bdf..b6513b2 100644 --- a/core/src/main/java/com/transferwise/common/gracefulshutdown/GracefulShutdowner.java +++ b/core/src/main/java/com/transferwise/common/gracefulshutdown/GracefulShutdowner.java @@ -13,6 +13,7 @@ import org.springframework.context.SmartLifecycle; import org.springframework.context.support.DefaultLifecycleProcessor; import org.springframework.core.annotation.AnnotationAwareOrderComparator; +import sun.misc.Signal; @Slf4j public class GracefulShutdowner implements SmartLifecycle, InitializingBean { @@ -46,6 +47,7 @@ public void afterPropertiesSet() { @Override public void start() { running = true; + initShutdownSignalLogging(new Signal("INT"), new Signal("QUIT"), new Signal("TERM"), new Signal("KILL")); validateStrategies(); @@ -61,6 +63,12 @@ public void start() { } } + protected void initShutdownSignalLogging(Signal... signals) { + for (var signal : signals) { + Signal.handle(signal, sig -> log.info("Received signal {}", sig.toString())); + } + } + protected void validateStrategies() { var registeredStrategies = ImmutableSet.copyOf(gracefulShutdownStrategiesRegistry.getStrategies()); var strategiesInAppContext = ImmutableSet.copyOf(applicationContext.getBeansOfType(GracefulShutdownStrategy.class).values()); diff --git a/gradle.properties b/gradle.properties index 75740c8..84398dc 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1 +1 @@ -version=2.15.1 +version=2.15.2