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);
+            }
+        }
+    }
 }

Reply via email to