Skip to content

Commit 75d7976

Browse files
authored
Merge pull request #48017 from zakkak/2025-05-22-install-exit-handlers
Enable --install-exit-handlers in native mode
2 parents 854ff3f + b3fbf72 commit 75d7976

File tree

2 files changed

+8
-11
lines changed

2 files changed

+8
-11
lines changed

core/deployment/src/main/java/io/quarkus/deployment/pkg/steps/NativeImageBuildStep.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -848,6 +848,14 @@ public NativeImageInvokerInfo build() {
848848
}
849849
}
850850

851+
/*
852+
* Always install exit handlers, it will become the default and the flag will be deprecated
853+
* in GraalVM for JDK 25 see https://github.com/quarkusio/quarkus/issues/47799
854+
*/
855+
if (graalVMVersion.compareTo(GraalVM.Version.VERSION_25_0_0) < 0) {
856+
nativeImageArgs.add("--install-exit-handlers");
857+
}
858+
851859
/*
852860
* Any parameters following this call are forced over the user provided parameters in
853861
* quarkus.native.additional-build-args or quarkus.native.additional-build-args-append. So if you need

core/runtime/src/main/java/io/quarkus/runtime/ApplicationLifecycleManager.java

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -287,28 +287,17 @@ private static void registerHooks(final BiConsumer<Integer, Throwable> exitCodeH
287287
}
288288

289289
private static void registerSignalHandlers(final BiConsumer<Integer, Throwable> exitCodeHandler) {
290-
final SignalHandler exitHandler = new SignalHandler() {
291-
@Override
292-
public void handle(Signal signal) {
293-
Logger applicationLogger = Logger.getLogger(Application.class);
294-
applicationLogger.debugf("Received signed %s, shutting down", signal.getNumber());
295-
exitCodeHandler.accept(signal.getNumber() + 0x80, null);
296-
}
297-
};
298290
final SignalHandler diagnosticsHandler = new SignalHandler() {
299291
@Override
300292
public void handle(Signal signal) {
301293
DiagnosticPrinter.printDiagnostics(System.out);
302294
}
303295
};
304-
handleSignal("INT", exitHandler);
305-
handleSignal("TERM", exitHandler);
306296
// the HUP and QUIT signals are not defined for the Windows OpenJDK implementation:
307297
// https://hg.openjdk.java.net/jdk8u/jdk8u-dev/hotspot/file/7d5c800dae75/src/os/windows/vm/jvm_windows.cpp
308298
if (IS_WINDOWS) {
309299
handleSignal("BREAK", diagnosticsHandler);
310300
} else {
311-
handleSignal("HUP", exitHandler);
312301
handleSignal("QUIT", diagnosticsHandler);
313302
}
314303
}

0 commit comments

Comments
 (0)