From b5b794ccdb9ae3bd627d989b2afd39cb9f23ceda Mon Sep 17 00:00:00 2001 From: Georgios Andrianakis Date: Mon, 31 Oct 2022 10:11:59 +0200 Subject: [PATCH] Warn about usage of Quarkus#blockingExit on the main thread Relates to: #28899 (cherry picked from commit 04652b7d3e601b143ad13e38d04a94c48b945444) --- core/runtime/src/main/java/io/quarkus/runtime/Quarkus.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/core/runtime/src/main/java/io/quarkus/runtime/Quarkus.java b/core/runtime/src/main/java/io/quarkus/runtime/Quarkus.java index 123e2047fec22..2494d6cec2089 100644 --- a/core/runtime/src/main/java/io/quarkus/runtime/Quarkus.java +++ b/core/runtime/src/main/java/io/quarkus/runtime/Quarkus.java @@ -2,6 +2,7 @@ import java.io.Closeable; import java.io.IOException; +import java.util.Locale; import java.util.function.BiConsumer; import org.jboss.logging.Logger; @@ -179,6 +180,12 @@ public static void waitForExit() { * Must not be called by the main thread, or a deadlock will result. */ public static void blockingExit() { + if (Thread.currentThread().getThreadGroup().getName().equals("main") && + Thread.currentThread().getName().toLowerCase(Locale.ROOT).contains("main")) { + Logger.getLogger(Quarkus.class).error( + "'Quarkus#blockingExit' was called on the main thread. This will result in deadlocking the application!"); + } + Application app = Application.currentApplication(); asyncExit(); if (app != null) {