This is an automated email from the ASF dual-hosted git repository. JiriOndrusek pushed a commit to branch camel-main in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git
commit f1268481a2a460659643c3715c4261daefdd8a70 Author: Jiri Ondrusek <[email protected]> AuthorDate: Thu May 21 09:52:17 2026 +0200 Fix virtual threads configuration for Quarkus static init Adapt to upstream Camel CAMEL-23479 fix which introduced ThreadType.enable() to override cached thread type. In Camel Quarkus, CamelContext is built during STATIC_INIT before CamelMain autoconfiguration runs, so we need to explicitly call ThreadType.enable() when camel.main.virtualThreadsEnabled is set. This replaces the previous system property approach that was removed as redundant in bdfd016f24, since Camel Main now handles it internally - but only when autoconfigure() runs before camelContext.build(). Co-Authored-By: Claude Sonnet 4.5 <[email protected]> --- .../apache/camel/quarkus/core/deployment/CamelProcessor.java | 9 +++++++++ .../java/org/apache/camel/quarkus/core/CamelRecorder.java | 11 +++++++++++ 2 files changed, 20 insertions(+) diff --git a/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/CamelProcessor.java b/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/CamelProcessor.java index 941b4d092f..3c42cca942 100644 --- a/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/CamelProcessor.java +++ b/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/CamelProcessor.java @@ -509,6 +509,15 @@ class CamelProcessor { return new CamelModelReifierFactoryBuildItem(recorder.modelReifierFactory()); } + @BuildStep + @Record(ExecutionTime.STATIC_INIT) + void configureVirtualThreads(CamelRecorder recorder) { + boolean enabled = org.eclipse.microprofile.config.ConfigProvider.getConfig() + .getOptionalValue("camel.main.virtualThreadsEnabled", Boolean.class) + .orElse(false); + recorder.enableVirtualThreads(enabled); + } + /** * Useful for identifying Camel services that are potentially not covered by inclusion patterns */ diff --git a/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelRecorder.java b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelRecorder.java index f9e049e5a2..624458d390 100644 --- a/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelRecorder.java +++ b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelRecorder.java @@ -241,4 +241,15 @@ public class CamelRecorder { throw new RuntimeException(e); } } + + public void enableVirtualThreads(boolean enabled) { + if (enabled) { + try { + Class<?> threadTypeClass = Class.forName("org.apache.camel.util.concurrent.ThreadType"); + threadTypeClass.getMethod("enable").invoke(null); + } catch (Exception e) { + throw new RuntimeException("Failed to enable virtual threads", e); + } + } + } }
