This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/main by this push: new b91d4e8137e CAMEL-20083: camel-opentelemtry - Make it easier to configure for camel-main b91d4e8137e is described below commit b91d4e8137eb790cc074fd1c3fece8b0cee85b07 Author: Claus Ibsen <claus.ib...@gmail.com> AuthorDate: Sun Nov 5 18:58:05 2023 +0100 CAMEL-20083: camel-opentelemtry - Make it easier to configure for camel-main --- .../CamelMicrometerObservationTestSupport.java | 6 ++--- .../observation/TwoServiceWithExcludeTest.java | 7 ++---- .../OpenTelemetryTracerConfigurer.java | 13 ++--------- .../OpenTelemetryTracingStrategy.java | 11 +++++---- .../CamelOpenTelemetryTestSupport.java | 6 ++--- .../opentelemetry/TwoServiceWithExcludeTest.java | 7 ++---- .../main/java/org/apache/camel/tracing/Tracer.java | 26 ++++++++-------------- .../ROOT/pages/camel-4x-upgrade-guide-4_2.adoc | 9 ++++++++ 8 files changed, 35 insertions(+), 50 deletions(-) diff --git a/components/camel-observation/src/test/java/org/apache/camel/observation/CamelMicrometerObservationTestSupport.java b/components/camel-observation/src/test/java/org/apache/camel/observation/CamelMicrometerObservationTestSupport.java index 4ad8fcf2e07..55d28c73f6d 100644 --- a/components/camel-observation/src/test/java/org/apache/camel/observation/CamelMicrometerObservationTestSupport.java +++ b/components/camel-observation/src/test/java/org/apache/camel/observation/CamelMicrometerObservationTestSupport.java @@ -21,10 +21,8 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.HashMap; -import java.util.HashSet; import java.util.List; import java.util.Map; -import java.util.Set; import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; @@ -138,8 +136,8 @@ class CamelMicrometerObservationTestSupport extends CamelTestSupport { }, otelBaggageManager); } - protected Set<String> getExcludePatterns() { - return new HashSet<>(); + protected String getExcludePatterns() { + return null; } protected void verify() { diff --git a/components/camel-observation/src/test/java/org/apache/camel/observation/TwoServiceWithExcludeTest.java b/components/camel-observation/src/test/java/org/apache/camel/observation/TwoServiceWithExcludeTest.java index 76b3f494c18..32dfa8355d2 100644 --- a/components/camel-observation/src/test/java/org/apache/camel/observation/TwoServiceWithExcludeTest.java +++ b/components/camel-observation/src/test/java/org/apache/camel/observation/TwoServiceWithExcludeTest.java @@ -16,9 +16,6 @@ */ package org.apache.camel.observation; -import java.util.Collections; -import java.util.Set; - import io.opentelemetry.api.trace.SpanKind; import org.apache.camel.RoutesBuilder; import org.apache.camel.builder.RouteBuilder; @@ -39,8 +36,8 @@ class TwoServiceWithExcludeTest extends CamelMicrometerObservationTestSupport { } @Override - protected Set<String> getExcludePatterns() { - return Collections.singleton("direct:ServiceB"); + protected String getExcludePatterns() { + return "direct:ServiceB"; } @Test diff --git a/components/camel-opentelemetry/src/generated/java/org/apache/camel/opentelemetry/OpenTelemetryTracerConfigurer.java b/components/camel-opentelemetry/src/generated/java/org/apache/camel/opentelemetry/OpenTelemetryTracerConfigurer.java index 0cd14dce133..a62e2a7b1a9 100644 --- a/components/camel-opentelemetry/src/generated/java/org/apache/camel/opentelemetry/OpenTelemetryTracerConfigurer.java +++ b/components/camel-opentelemetry/src/generated/java/org/apache/camel/opentelemetry/OpenTelemetryTracerConfigurer.java @@ -28,7 +28,7 @@ public class OpenTelemetryTracerConfigurer extends org.apache.camel.support.comp case "encoding": case "Encoding": target.setEncoding(property(camelContext, boolean.class, value)); return true; case "excludepatterns": - case "ExcludePatterns": target.setExcludePatterns(property(camelContext, java.util.Set.class, value)); return true; + case "ExcludePatterns": target.setExcludePatterns(property(camelContext, java.lang.String.class, value)); return true; case "instrumentationname": case "InstrumentationName": target.setInstrumentationName(property(camelContext, java.lang.String.class, value)); return true; case "tracer": @@ -49,7 +49,7 @@ public class OpenTelemetryTracerConfigurer extends org.apache.camel.support.comp case "encoding": case "Encoding": return boolean.class; case "excludepatterns": - case "ExcludePatterns": return java.util.Set.class; + case "ExcludePatterns": return java.lang.String.class; case "instrumentationname": case "InstrumentationName": return java.lang.String.class; case "tracer": @@ -81,14 +81,5 @@ public class OpenTelemetryTracerConfigurer extends org.apache.camel.support.comp default: return null; } } - - @Override - public Object getCollectionValueType(Object target, String name, boolean ignoreCase) { - switch (ignoreCase ? name.toLowerCase() : name) { - case "excludepatterns": - case "ExcludePatterns": return java.lang.String.class; - default: return null; - } - } } diff --git a/components/camel-opentelemetry/src/main/java/org/apache/camel/opentelemetry/OpenTelemetryTracingStrategy.java b/components/camel-opentelemetry/src/main/java/org/apache/camel/opentelemetry/OpenTelemetryTracingStrategy.java index 9f3f3870cd1..7208d53dd8b 100644 --- a/components/camel-opentelemetry/src/main/java/org/apache/camel/opentelemetry/OpenTelemetryTracingStrategy.java +++ b/components/camel-opentelemetry/src/main/java/org/apache/camel/opentelemetry/OpenTelemetryTracingStrategy.java @@ -101,10 +101,13 @@ public class OpenTelemetryTracingStrategy implements InterceptStrategy { // Adapted from org.apache.camel.impl.engine.DefaultTracer.shouldTrace // org.apache.camel.impl.engine.DefaultTracer.shouldTracePattern private boolean shouldTrace(NamedNode definition) { - for (String pattern : tracer.getExcludePatterns()) { - // use matchPattern method from endpoint helper that has a good matcher we use in Camel - if (PatternHelper.matchPattern(definition.getId(), pattern)) { - return false; + if (tracer.getExcludePatterns() != null) { + for (String pattern : tracer.getExcludePatterns().split(",")) { + pattern = pattern.trim(); + // use matchPattern method from endpoint helper that has a good matcher we use in Camel + if (PatternHelper.matchPattern(definition.getId(), pattern)) { + return false; + } } } diff --git a/components/camel-opentelemetry/src/test/java/org/apache/camel/opentelemetry/CamelOpenTelemetryTestSupport.java b/components/camel-opentelemetry/src/test/java/org/apache/camel/opentelemetry/CamelOpenTelemetryTestSupport.java index 1fd59a4cb70..1bc2bfd1ea4 100644 --- a/components/camel-opentelemetry/src/test/java/org/apache/camel/opentelemetry/CamelOpenTelemetryTestSupport.java +++ b/components/camel-opentelemetry/src/test/java/org/apache/camel/opentelemetry/CamelOpenTelemetryTestSupport.java @@ -20,10 +20,8 @@ import java.net.URI; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; -import java.util.HashSet; import java.util.List; import java.util.Map; -import java.util.Set; import java.util.concurrent.TimeUnit; import java.util.function.Function; @@ -92,8 +90,8 @@ class CamelOpenTelemetryTestSupport extends CamelTestSupport { return context; } - protected Set<String> getExcludePatterns() { - return new HashSet<>(); + protected String getExcludePatterns() { + return null; } protected void verify() { diff --git a/components/camel-opentelemetry/src/test/java/org/apache/camel/opentelemetry/TwoServiceWithExcludeTest.java b/components/camel-opentelemetry/src/test/java/org/apache/camel/opentelemetry/TwoServiceWithExcludeTest.java index 44665b7306d..4448365acfa 100644 --- a/components/camel-opentelemetry/src/test/java/org/apache/camel/opentelemetry/TwoServiceWithExcludeTest.java +++ b/components/camel-opentelemetry/src/test/java/org/apache/camel/opentelemetry/TwoServiceWithExcludeTest.java @@ -16,9 +16,6 @@ */ package org.apache.camel.opentelemetry; -import java.util.Collections; -import java.util.Set; - import io.opentelemetry.api.trace.SpanKind; import org.apache.camel.RoutesBuilder; import org.apache.camel.builder.RouteBuilder; @@ -38,8 +35,8 @@ class TwoServiceWithExcludeTest extends CamelOpenTelemetryTestSupport { } @Override - protected Set<String> getExcludePatterns() { - return Collections.singleton("direct:ServiceB"); + protected String getExcludePatterns() { + return "direct:ServiceB"; } @Test diff --git a/components/camel-tracing/src/main/java/org/apache/camel/tracing/Tracer.java b/components/camel-tracing/src/main/java/org/apache/camel/tracing/Tracer.java index 3afbeae663f..15848042f54 100644 --- a/components/camel-tracing/src/main/java/org/apache/camel/tracing/Tracer.java +++ b/components/camel-tracing/src/main/java/org/apache/camel/tracing/Tracer.java @@ -17,10 +17,8 @@ package org.apache.camel.tracing; import java.util.HashMap; -import java.util.HashSet; import java.util.Map; import java.util.ServiceLoader; -import java.util.Set; import org.apache.camel.CamelContext; import org.apache.camel.Component; @@ -30,6 +28,7 @@ import org.apache.camel.NamedNode; import org.apache.camel.Route; import org.apache.camel.RuntimeCamelException; import org.apache.camel.StaticService; +import org.apache.camel.api.management.ManagedAttribute; import org.apache.camel.spi.CamelEvent; import org.apache.camel.spi.CamelLogger; import org.apache.camel.spi.CamelTracingService; @@ -70,7 +69,7 @@ public abstract class Tracer extends ServiceSupport implements CamelTracingServi protected boolean encoding; private final TracingLogListener logListener = new TracingLogListener(); private final TracingEventNotifier eventNotifier = new TracingEventNotifier(); - private Set<String> excludePatterns = new HashSet<>(0); + private String excludePatterns; private InterceptStrategy tracingStrategy; private CamelContext camelContext; @@ -120,14 +119,16 @@ public abstract class Tracer extends ServiceSupport implements CamelTracingServi this.camelContext = camelContext; } - public Set<String> getExcludePatterns() { + @ManagedAttribute + public String getExcludePatterns() { return excludePatterns; } - public void setExcludePatterns(Set<String> excludePatterns) { + public void setExcludePatterns(String excludePatterns) { this.excludePatterns = excludePatterns; } + @ManagedAttribute public boolean isEncoding() { return encoding; } @@ -136,20 +137,10 @@ public abstract class Tracer extends ServiceSupport implements CamelTracingServi this.encoding = encoding; } - /** - * Adds an exclude pattern that will disable tracing for Camel messages that matches the pattern. - * - * @param pattern the pattern such as route id, endpoint url - */ - public void addExcludePattern(String pattern) { - excludePatterns.add(pattern); - } - @Override public RoutePolicy createRoutePolicy(CamelContext camelContext, String routeId, NamedNode route) { init(camelContext); return new TracingRoutePolicy(); - } /** @@ -222,8 +213,9 @@ public abstract class Tracer extends ServiceSupport implements CamelTracingServi private boolean isExcluded(Exchange exchange, Endpoint endpoint) { String url = endpoint.getEndpointUri(); - if (url != null && !excludePatterns.isEmpty()) { - for (String pattern : excludePatterns) { + if (url != null && excludePatterns != null) { + for (String pattern : excludePatterns.split(",")) { + pattern = pattern.trim(); if (EndpointHelper.matchEndpoint(exchange.getContext(), url, pattern)) { return true; } diff --git a/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_2.adoc b/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_2.adoc index dcf787c78a3..1c9bd3eaef2 100644 --- a/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_2.adoc +++ b/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_2.adoc @@ -30,6 +30,11 @@ in case of mis-configuration or invalid hostname. This can be disabled by setting `preValidateHostAndPort=false`, which will postpone validation to consumer is started, and will instead re-connect endlessly (5 sec delay by default) until success. +=== camel-observation / camel-opentelemetry + +The `excludePatterns` option has changed from `Set<String>` to be `String` where multiple patterns are separated by comma. +This is more configuration and tooling friendly and used by other components. + === camel-saga, camel-lra The `org.apache.camel.service.lra.LRAClient` can now access `Exchange` to retrieve further context information. Therefore, there are following changes in interface methods @@ -65,3 +70,7 @@ The `initialProperties` and `overrideProperties` on Camel `PropertiesComponent` take precedence over Spring Boot properties. This can be used for testing purpose, to allow overriding properties when using `CamelTestSupport` for unit testing. +=== camel-opentelemetry-starter + +The `excludePatterns` option has changed from `Set<String>` to be `String` where multiple patterns are separated by comma. +This is more configuration and tooling friendly and used by other components.