diff --git a/core/src/main/java/hudson/lifecycle/Lifecycle.java b/core/src/main/java/hudson/lifecycle/Lifecycle.java index a46452420ec6..fce497456b7f 100644 --- a/core/src/main/java/hudson/lifecycle/Lifecycle.java +++ b/core/src/main/java/hudson/lifecycle/Lifecycle.java @@ -54,6 +54,19 @@ public abstract class Lifecycle implements ExtensionPoint { private static Lifecycle INSTANCE = null; + public Lifecycle() { + Runtime.getRuntime().addShutdownHook(new Thread(() -> { + Jenkins jenkins = Jenkins.getInstanceOrNull(); + if (jenkins != null) { + try { + jenkins.cleanUp(); + } catch (Throwable t) { + LOGGER.log(Level.SEVERE, "Failed to clean up. Shutdown will continue.", t); + } + } + })); + } + /** * Gets the singleton instance. *