This is an automated email from the ASF dual-hosted git repository.

jamesnetherton pushed a commit to branch 3.15.x
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git

commit badbd5de9b0dcbfa23c5db8fb69eb1e81692a4ff
Author: James Netherton <[email protected]>
AuthorDate: Fri Nov 22 08:28:48 2024 +0000

    Avoid producing OpenTelemetryTracer bean if quarkus.otel.sdk.disabled = true
    
    Fixes #6814
---
 .../deployment/OpenTelemetrySdkDisabledTest.java   | 68 ++++++++++++++++++++++
 .../opentelemetry/OpenTelemetryTracerProducer.java | 33 ++++++-----
 2 files changed, 88 insertions(+), 13 deletions(-)

diff --git 
a/extensions/opentelemetry/deployment/src/test/java/org/apache/camel/quarkus/component/opentelemetry/deployment/OpenTelemetrySdkDisabledTest.java
 
b/extensions/opentelemetry/deployment/src/test/java/org/apache/camel/quarkus/component/opentelemetry/deployment/OpenTelemetrySdkDisabledTest.java
new file mode 100644
index 0000000000..54b2bdf18b
--- /dev/null
+++ 
b/extensions/opentelemetry/deployment/src/test/java/org/apache/camel/quarkus/component/opentelemetry/deployment/OpenTelemetrySdkDisabledTest.java
@@ -0,0 +1,68 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.quarkus.component.opentelemetry.deployment;
+
+import java.io.IOException;
+import java.io.StringWriter;
+import java.io.Writer;
+import java.util.Properties;
+import java.util.Set;
+
+import io.quarkus.test.QuarkusUnitTest;
+import jakarta.inject.Inject;
+import org.apache.camel.CamelContext;
+import org.apache.camel.opentelemetry.OpenTelemetryTracer;
+import org.jboss.shrinkwrap.api.ShrinkWrap;
+import org.jboss.shrinkwrap.api.asset.Asset;
+import org.jboss.shrinkwrap.api.asset.StringAsset;
+import org.jboss.shrinkwrap.api.spec.JavaArchive;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
+
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+public class OpenTelemetrySdkDisabledTest {
+
+    @RegisterExtension
+    static final QuarkusUnitTest CONFIG = new QuarkusUnitTest()
+            .setArchiveProducer(() -> ShrinkWrap.create(JavaArchive.class)
+                    .addAsResource(applicationProperties(), 
"application.properties"));
+
+    @Inject
+    CamelContext context;
+
+    @Test
+    public void camelOpenTelemetryTracerRegistryBeanNull() {
+        Set<OpenTelemetryTracer> tracers = 
context.getRegistry().findByType(OpenTelemetryTracer.class);
+        assertTrue(tracers.isEmpty());
+    }
+
+    public static final Asset applicationProperties() {
+        Writer writer = new StringWriter();
+
+        Properties props = new Properties();
+        props.setProperty("quarkus.otel.sdk.disabled", "true");
+
+        try {
+            props.store(writer, "");
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+
+        return new StringAsset(writer.toString());
+    }
+}
diff --git 
a/extensions/opentelemetry/runtime/src/main/java/org/apache/camel/quarkus/component/opentelemetry/OpenTelemetryTracerProducer.java
 
b/extensions/opentelemetry/runtime/src/main/java/org/apache/camel/quarkus/component/opentelemetry/OpenTelemetryTracerProducer.java
index 0e1b61983c..7b6ea59435 100644
--- 
a/extensions/opentelemetry/runtime/src/main/java/org/apache/camel/quarkus/component/opentelemetry/OpenTelemetryTracerProducer.java
+++ 
b/extensions/opentelemetry/runtime/src/main/java/org/apache/camel/quarkus/component/opentelemetry/OpenTelemetryTracerProducer.java
@@ -18,6 +18,7 @@ package org.apache.camel.quarkus.component.opentelemetry;
 
 import io.opentelemetry.api.trace.Tracer;
 import io.quarkus.arc.DefaultBean;
+import io.quarkus.opentelemetry.runtime.config.runtime.OTelRuntimeConfig;
 import jakarta.enterprise.inject.Produces;
 import jakarta.inject.Inject;
 import jakarta.inject.Singleton;
@@ -31,6 +32,9 @@ public class OpenTelemetryTracerProducer {
     @Inject
     CamelOpenTelemetryConfig config;
 
+    @Inject
+    OTelRuntimeConfig oTelRuntimeConfig;
+
     @Inject
     Tracer tracer;
 
@@ -38,21 +42,24 @@ public class OpenTelemetryTracerProducer {
     @Singleton
     @DefaultBean
     public OpenTelemetryTracer getOpenTelemetry() {
-        OpenTelemetryTracer openTelemetryTracer = new 
CamelQuarkusOpenTelemetryTracer();
-        if (tracer != null) {
-            openTelemetryTracer.setTracer(tracer);
-            if (config.excludePatterns.isPresent()) {
-                
openTelemetryTracer.setExcludePatterns(config.excludePatterns.get());
-            }
+        if (!oTelRuntimeConfig.sdkDisabled()) {
+            OpenTelemetryTracer openTelemetryTracer = new 
CamelQuarkusOpenTelemetryTracer();
+            if (tracer != null) {
+                openTelemetryTracer.setTracer(tracer);
+                if (config.excludePatterns.isPresent()) {
+                    
openTelemetryTracer.setExcludePatterns(config.excludePatterns.get());
+                }
 
-            if (config.traceProcessors) {
-                OpenTelemetryTracingStrategy tracingStrategy = new 
OpenTelemetryTracingStrategy(openTelemetryTracer);
-                tracingStrategy.setPropagateContext(true);
-                openTelemetryTracer.setTracingStrategy(tracingStrategy);
-            }
+                if (config.traceProcessors) {
+                    OpenTelemetryTracingStrategy tracingStrategy = new 
OpenTelemetryTracingStrategy(openTelemetryTracer);
+                    tracingStrategy.setPropagateContext(true);
+                    openTelemetryTracer.setTracingStrategy(tracingStrategy);
+                }
 
-            openTelemetryTracer.setEncoding(config.encoding);
+                openTelemetryTracer.setEncoding(config.encoding);
+            }
+            return openTelemetryTracer;
         }
-        return openTelemetryTracer;
+        return null;
     }
 }

Reply via email to