From 33fdb47512509c62067734b3821aeb864c3b91a7 Mon Sep 17 00:00:00 2001 From: Norman Ma <112887428+normanma-tw@users.noreply.github.com> Date: Wed, 19 Feb 2025 16:21:18 +0000 Subject: [PATCH] APPENG-1147: Log shutdown signal received with signal handler (#48) * APPENG-1147: Log shutdown signal received with signal handler * APPENG-1147: Remove signals that cannot be overriden by application * APPENG-1147: additional log for registering signal handlers --- CHANGELOG.md | 5 +++++ .../common/gracefulshutdown/GracefulShutdowner.java | 9 +++++++++ gradle.properties | 2 +- 3 files changed, 15 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..7433563 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("TERM")); validateStrategies(); @@ -61,6 +63,13 @@ public void start() { } } + protected void initShutdownSignalLogging(Signal... signals) { + for (var signal : signals) { + log.info("Registering shutdown signal handler for signal '{}'", signal.toString()); + 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