This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/master by this push: new a1802ab Update opentelemetry to 0.11 (#4684) a1802ab is described below commit a1802ab9792b41180d21ea85f712dcb2691a31e4 Author: Ruben Vargas Palma <ruben.vp8...@gmail.com> AuthorDate: Thu Nov 26 23:41:41 2020 -0600 Update opentelemetry to 0.11 (#4684) Signed-off-by: Ruben Vargas <ruben.vp8...@gmail.com> --- components/camel-opentelemetry/pom.xml | 8 +-- .../camel/opentelemetry/AttributeProcessor.java | 4 +- .../opentelemetry/OpenTelemetrySpanAdapter.java | 73 ++++++++++------------ .../camel/opentelemetry/OpenTelemetryTracer.java | 56 ++++++++--------- .../propagators/OpenTelemetryGetter.java | 5 ++ .../CamelOpenTelemetryTestSupport.java | 56 ++++++++--------- .../apache/camel/opentelemetry/SpanTestData.java | 2 +- .../org/apache/camel/tracing/ExtractAdapter.java | 3 + .../propagation/CamelHeadersExtractAdapter.java | 6 ++ .../CamelMessagingHeadersExtractAdapter.java | 6 ++ parent/pom.xml | 2 +- 11 files changed, 114 insertions(+), 107 deletions(-) diff --git a/components/camel-opentelemetry/pom.xml b/components/camel-opentelemetry/pom.xml index bbe36d1..1b3a869 100644 --- a/components/camel-opentelemetry/pom.xml +++ b/components/camel-opentelemetry/pom.xml @@ -64,11 +64,6 @@ <version>${opentelemetry-version}</version> </dependency> <dependency> - <groupId>io.opentelemetry</groupId> - <artifactId>opentelemetry-exporters-otlp</artifactId> - <version>${opentelemetry-version}</version> - </dependency> - <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-slf4j-impl</artifactId> <scope>test</scope> @@ -80,8 +75,9 @@ </dependency> <dependency> <groupId>io.opentelemetry</groupId> - <artifactId>opentelemetry-exporters-inmemory</artifactId> + <artifactId>opentelemetry-sdk-testing</artifactId> <version>${opentelemetry-version}</version> + <scope>test</scope> </dependency> </dependencies> diff --git a/components/camel-opentelemetry/src/main/java/org/apache/camel/opentelemetry/AttributeProcessor.java b/components/camel-opentelemetry/src/main/java/org/apache/camel/opentelemetry/AttributeProcessor.java index 12b0249..104e97a 100644 --- a/components/camel-opentelemetry/src/main/java/org/apache/camel/opentelemetry/AttributeProcessor.java +++ b/components/camel-opentelemetry/src/main/java/org/apache/camel/opentelemetry/AttributeProcessor.java @@ -16,7 +16,7 @@ */ package org.apache.camel.opentelemetry; -import io.opentelemetry.trace.Span; +import io.opentelemetry.api.trace.Span; import org.apache.camel.AsyncCallback; import org.apache.camel.Exchange; import org.apache.camel.Expression; @@ -30,7 +30,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** - * A processor which adds a attribute on the active {@link io.opentelemetry.trace.Span} with an + * A processor which adds a attribute on the active {@link io.opentelemetry.api.trace.Span} with an * {@link org.apache.camel.Expression} */ public class AttributeProcessor extends AsyncProcessorSupport implements Traceable, IdAware, RouteIdAware { diff --git a/components/camel-opentelemetry/src/main/java/org/apache/camel/opentelemetry/OpenTelemetrySpanAdapter.java b/components/camel-opentelemetry/src/main/java/org/apache/camel/opentelemetry/OpenTelemetrySpanAdapter.java index 06b47aa..b62f1ed 100644 --- a/components/camel-opentelemetry/src/main/java/org/apache/camel/opentelemetry/OpenTelemetrySpanAdapter.java +++ b/components/camel-opentelemetry/src/main/java/org/apache/camel/opentelemetry/OpenTelemetrySpanAdapter.java @@ -19,49 +19,44 @@ package org.apache.camel.opentelemetry; import java.util.EnumMap; import java.util.Map; -import io.opentelemetry.OpenTelemetry; -import io.opentelemetry.common.AttributeValue; -import io.opentelemetry.common.Attributes; -import io.opentelemetry.correlationcontext.CorrelationContext; -import io.opentelemetry.correlationcontext.CorrelationContextManager; -import io.opentelemetry.correlationcontext.EntryMetadata; -import io.opentelemetry.trace.attributes.SemanticAttributes; +import io.opentelemetry.api.baggage.Baggage; +import io.opentelemetry.api.baggage.BaggageBuilder; +import io.opentelemetry.api.baggage.EntryMetadata; +import io.opentelemetry.api.common.Attributes; +import io.opentelemetry.api.common.AttributesBuilder; +import io.opentelemetry.api.trace.attributes.SemanticAttributes; +import io.opentelemetry.context.Context; import org.apache.camel.tracing.SpanAdapter; import org.apache.camel.tracing.Tag; public class OpenTelemetrySpanAdapter implements SpanAdapter { - static final EntryMetadata DEFAULT_ENTRY_METADATA = EntryMetadata.create(EntryMetadata.EntryTtl.UNLIMITED_PROPAGATION); private static final String DEFAULT_EVENT_NAME = "log"; private static EnumMap<Tag, String> tagMap = new EnumMap<>(Tag.class); static { tagMap.put(Tag.COMPONENT, "component"); - tagMap.put(Tag.DB_TYPE, SemanticAttributes.DB_SYSTEM.key()); - tagMap.put(Tag.DB_STATEMENT, SemanticAttributes.DB_STATEMENT.key()); - tagMap.put(Tag.DB_INSTANCE, SemanticAttributes.DB_NAME.key()); - tagMap.put(Tag.HTTP_METHOD, SemanticAttributes.HTTP_METHOD.key()); - tagMap.put(Tag.HTTP_STATUS, SemanticAttributes.HTTP_STATUS_CODE.key()); - tagMap.put(Tag.HTTP_URL, SemanticAttributes.HTTP_URL.key()); + tagMap.put(Tag.DB_TYPE, SemanticAttributes.DB_SYSTEM.getKey()); + tagMap.put(Tag.DB_STATEMENT, SemanticAttributes.DB_STATEMENT.getKey()); + tagMap.put(Tag.DB_INSTANCE, SemanticAttributes.DB_NAME.getKey()); + tagMap.put(Tag.HTTP_METHOD, SemanticAttributes.HTTP_METHOD.getKey()); + tagMap.put(Tag.HTTP_STATUS, SemanticAttributes.HTTP_STATUS_CODE.getKey()); + tagMap.put(Tag.HTTP_URL, SemanticAttributes.HTTP_URL.getKey()); tagMap.put(Tag.MESSAGE_BUS_DESTINATION, "message_bus.destination"); } - io.opentelemetry.trace.Span span; - private CorrelationContextManager contextManager; - private CorrelationContext correlationContext; - private OpenTelemetrySpanAdapter parent; + private Baggage baggage; + private io.opentelemetry.api.trace.Span span; - OpenTelemetrySpanAdapter(io.opentelemetry.trace.Span span) { + OpenTelemetrySpanAdapter(io.opentelemetry.api.trace.Span span) { this.span = span; - this.contextManager = OpenTelemetry.getCorrelationContextManager(); } - OpenTelemetrySpanAdapter(io.opentelemetry.trace.Span span, CorrelationContext correlationContext) { + OpenTelemetrySpanAdapter(io.opentelemetry.api.trace.Span span, Baggage baggage) { this.span = span; - this.contextManager = OpenTelemetry.getCorrelationContextManager(); - this.correlationContext = correlationContext; + this.baggage = baggage; } - io.opentelemetry.trace.Span getOpenTelemetrySpan() { + io.opentelemetry.api.trace.Span getOpenTelemetrySpan() { return this.span; } @@ -115,7 +110,7 @@ public class OpenTelemetrySpanAdapter implements SpanAdapter { } Attributes convertToAttributes(Map<String, ?> fields) { - Attributes.Builder attributesBuilder = Attributes.newBuilder(); + AttributesBuilder attributesBuilder = Attributes.builder(); for (Map.Entry<String, ?> entry : fields.entrySet()) { String key = entry.getKey(); @@ -127,37 +122,37 @@ public class OpenTelemetrySpanAdapter implements SpanAdapter { || value instanceof Short || value instanceof Integer || value instanceof Long) { - attributesBuilder.setAttribute(key, AttributeValue.longAttributeValue(((Number) value).longValue())); + attributesBuilder.put(key, ((Number) value).longValue()); } else if (value instanceof Float || value instanceof Double) { - attributesBuilder.setAttribute(key, AttributeValue.doubleAttributeValue(((Number) value).doubleValue())); + attributesBuilder.put(key, ((Number) value).doubleValue()); } else if (value instanceof Boolean) { - attributesBuilder.setAttribute(key, AttributeValue.booleanAttributeValue((Boolean) value)); + attributesBuilder.put(key, (Boolean) value); } else { - attributesBuilder.setAttribute(key, AttributeValue.stringAttributeValue(value.toString())); + attributesBuilder.put(key, value.toString()); } } return attributesBuilder.build(); } - public CorrelationContext getCorrelationContext() { - return this.correlationContext; + public Baggage getBaggage() { + return this.baggage; } - public void setCorrelationContext(CorrelationContext correlationContext) { - this.correlationContext = correlationContext; + public void setBaggage(Baggage baggage) { + this.baggage = baggage; } public void setCorrelationContextItem(String key, String value) { - CorrelationContext.Builder builder = contextManager.contextBuilder(); - if (correlationContext != null) { - builder = builder.setParent(correlationContext); + BaggageBuilder builder = Baggage.builder(); + if (baggage != null) { + builder = builder.setParent(Context.current().with(baggage)); } - correlationContext = builder.put(key, value, DEFAULT_ENTRY_METADATA).build(); + baggage = builder.put(key, value, EntryMetadata.EMPTY).build(); } public String getContextPropagationItem(String key) { - if (correlationContext != null) { - return correlationContext.getEntryValue(key); + if (baggage != null) { + return baggage.getEntryValue(key); } return null; } diff --git a/components/camel-opentelemetry/src/main/java/org/apache/camel/opentelemetry/OpenTelemetryTracer.java b/components/camel-opentelemetry/src/main/java/org/apache/camel/opentelemetry/OpenTelemetryTracer.java index a3c1d90..0d5a3cd 100644 --- a/components/camel-opentelemetry/src/main/java/org/apache/camel/opentelemetry/OpenTelemetryTracer.java +++ b/components/camel-opentelemetry/src/main/java/org/apache/camel/opentelemetry/OpenTelemetryTracer.java @@ -18,15 +18,12 @@ package org.apache.camel.opentelemetry; import java.util.Set; -import io.grpc.Context; -import io.opentelemetry.OpenTelemetry; -import io.opentelemetry.correlationcontext.CorrelationContext; -import io.opentelemetry.correlationcontext.CorrelationsContextUtils; -import io.opentelemetry.trace.DefaultTracer; -import io.opentelemetry.trace.Span; -import io.opentelemetry.trace.SpanContext; -import io.opentelemetry.trace.Tracer; -import io.opentelemetry.trace.TracingContextUtils; +import io.opentelemetry.api.OpenTelemetry; +import io.opentelemetry.api.baggage.Baggage; +import io.opentelemetry.api.trace.Span; +import io.opentelemetry.api.trace.SpanBuilder; +import io.opentelemetry.api.trace.Tracer; +import io.opentelemetry.context.Context; import org.apache.camel.Exchange; import org.apache.camel.api.management.ManagedResource; import org.apache.camel.opentelemetry.propagators.OpenTelemetryGetter; @@ -81,52 +78,51 @@ public class OpenTelemetryTracer extends org.apache.camel.tracing.Tracer { } if (tracer == null) { - tracer = OpenTelemetry.getTracer(instrumentationName); + tracer = OpenTelemetry.get().getTracer(instrumentationName); } if (tracer == null) { // No tracer is available, so setup NoopTracer - tracer = DefaultTracer.getInstance(); + tracer = Tracer.getDefault(); } } @Override protected SpanAdapter startSendingEventSpan(String operationName, SpanKind kind, SpanAdapter parent) { - Span.Builder builder = tracer.spanBuilder(operationName).setSpanKind(mapToSpanKind(kind)); - CorrelationContext correlationContext = null; + Baggage baggage = null; + SpanBuilder builder = tracer.spanBuilder(operationName).setSpanKind(mapToSpanKind(kind)); if (parent != null) { OpenTelemetrySpanAdapter oTelSpanWrapper = (OpenTelemetrySpanAdapter) parent; Span parentSpan = oTelSpanWrapper.getOpenTelemetrySpan(); - correlationContext = oTelSpanWrapper.getCorrelationContext(); - builder = builder.setParent(parentSpan); + baggage = oTelSpanWrapper.getBaggage(); + builder = builder.setParent(Context.current().with(parentSpan)); } - return new OpenTelemetrySpanAdapter(builder.startSpan(), correlationContext); + return new OpenTelemetrySpanAdapter(builder.startSpan(), baggage); } @Override protected SpanAdapter startExchangeBeginSpan( Exchange exchange, SpanDecorator sd, String operationName, SpanKind kind, SpanAdapter parent) { - Span.Builder builder = tracer.spanBuilder(operationName); - CorrelationContext correlationContext = null; + SpanBuilder builder = tracer.spanBuilder(operationName); + Baggage baggage; if (parent != null) { OpenTelemetrySpanAdapter spanFromExchange = (OpenTelemetrySpanAdapter) parent; - builder = builder.setParent(spanFromExchange.getOpenTelemetrySpan()); - correlationContext = spanFromExchange.getCorrelationContext(); + builder = builder.setParent(Context.current().with(spanFromExchange.getOpenTelemetrySpan())); + baggage = spanFromExchange.getBaggage(); } else { ExtractAdapter adapter = sd.getExtractAdapter(exchange.getIn().getHeaders(), encoding); - Context ctx = OpenTelemetry.getPropagators().getTextMapPropagator().extract(Context.current(), adapter, + Context ctx = OpenTelemetry.get().getPropagators().getTextMapPropagator().extract(Context.current(), adapter, new OpenTelemetryGetter(adapter)); - Span span = TracingContextUtils.getSpan(ctx); - SpanContext parentFromHeaders = span.getContext(); - correlationContext = CorrelationsContextUtils.getCorrelationContext(ctx); - if (parentFromHeaders != null && parentFromHeaders.isValid()) { - builder.setParent(parentFromHeaders).setSpanKind(mapToSpanKind(sd.getReceiverSpanKind())); + Span span = Span.fromContext(ctx); + baggage = Baggage.fromContext(ctx); + if (span != null && span.getSpanContext().isValid()) { + builder.setParent(ctx).setSpanKind(mapToSpanKind(sd.getReceiverSpanKind())); } else if (!(sd instanceof AbstractInternalSpanDecorator)) { builder.setSpanKind(mapToSpanKind(sd.getReceiverSpanKind())); } } - return new OpenTelemetrySpanAdapter(builder.startSpan(), correlationContext); + return new OpenTelemetrySpanAdapter(builder.startSpan(), baggage); } @Override @@ -138,9 +134,9 @@ public class OpenTelemetryTracer extends org.apache.camel.tracing.Tracer { @Override protected void inject(SpanAdapter span, InjectAdapter adapter) { OpenTelemetrySpanAdapter spanFromExchange = (OpenTelemetrySpanAdapter) span; - Context context = TracingContextUtils.withSpan(spanFromExchange.getOpenTelemetrySpan(), Context.current()); - context = CorrelationsContextUtils.withCorrelationContext(spanFromExchange.getCorrelationContext(), context); - OpenTelemetry.getPropagators().getTextMapPropagator().inject(context, adapter, new OpenTelemetrySetter()); + Span otelSpan = spanFromExchange.getOpenTelemetrySpan(); + Context ctx = Context.current().with(otelSpan).with(spanFromExchange.getBaggage()); + OpenTelemetry.get().getPropagators().getTextMapPropagator().inject(ctx, adapter, new OpenTelemetrySetter()); } } diff --git a/components/camel-opentelemetry/src/main/java/org/apache/camel/opentelemetry/propagators/OpenTelemetryGetter.java b/components/camel-opentelemetry/src/main/java/org/apache/camel/opentelemetry/propagators/OpenTelemetryGetter.java index 2254270..856c721 100644 --- a/components/camel-opentelemetry/src/main/java/org/apache/camel/opentelemetry/propagators/OpenTelemetryGetter.java +++ b/components/camel-opentelemetry/src/main/java/org/apache/camel/opentelemetry/propagators/OpenTelemetryGetter.java @@ -28,6 +28,11 @@ public class OpenTelemetryGetter implements TextMapPropagator.Getter<ExtractAdap } @Override + public Iterable<String> keys(ExtractAdapter extractAdapter) { + return adapter.keys(); + } + + @Override public String get(ExtractAdapter adapter, String key) { return (String) adapter.get(key); } 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 32d5f1c..d7631c0 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 @@ -26,12 +26,12 @@ import java.util.Map; import java.util.Set; import java.util.stream.Collectors; -import io.opentelemetry.exporters.inmemory.InMemoryTracing; -import io.opentelemetry.sdk.OpenTelemetrySdk; +import io.opentelemetry.api.common.AttributeKey; +import io.opentelemetry.api.trace.Tracer; +import io.opentelemetry.sdk.testing.exporter.InMemorySpanExporter; import io.opentelemetry.sdk.trace.TracerSdkProvider; import io.opentelemetry.sdk.trace.data.SpanData; -import io.opentelemetry.trace.TraceId; -import io.opentelemetry.trace.Tracer; +import io.opentelemetry.sdk.trace.export.SimpleSpanProcessor; import org.apache.camel.CamelContext; import org.apache.camel.test.junit5.CamelTestSupport; import org.apache.camel.tracing.SpanDecorator; @@ -41,10 +41,17 @@ import static org.junit.jupiter.api.Assertions.assertNotNull; public class CamelOpenTelemetryTestSupport extends CamelTestSupport { - InMemoryTracing inMemorytracing; + static final AttributeKey<String> CAMEL_URI_KEY = AttributeKey.stringKey("camel-uri"); + static final AttributeKey<String> COMPONENT_KEY = AttributeKey.stringKey("component"); + static final AttributeKey<String> PRE_KEY = AttributeKey.stringKey("pre"); + static final AttributeKey<String> POST_KEY = AttributeKey.stringKey("post"); + static final AttributeKey<String> MESSAGE_KEY = AttributeKey.stringKey("message"); + + private InMemorySpanExporter inMemorySpanExporter = InMemorySpanExporter.create(); private SpanTestData[] testdata; private Tracer tracer; private OpenTelemetryTracer ottracer; + private TracerSdkProvider tracerFactory = TracerSdkProvider.builder().build(); public CamelOpenTelemetryTestSupport(SpanTestData[] testdata) { this.testdata = testdata; @@ -54,9 +61,8 @@ public class CamelOpenTelemetryTestSupport extends CamelTestSupport { protected CamelContext createCamelContext() throws Exception { CamelContext context = super.createCamelContext(); ottracer = new OpenTelemetryTracer(); - TracerSdkProvider provider = OpenTelemetrySdk.getTracerProvider().builder().build(); - inMemorytracing = InMemoryTracing.builder().setTracerProvider(provider).build(); - tracer = provider.get("tracerTest"); + tracerFactory.addSpanProcessor(SimpleSpanProcessor.builder(inMemorySpanExporter).build()); + tracer = tracerFactory.get("tracerTest"); ottracer.setTracer(tracer); ottracer.setExcludePatterns(getExcludePatterns()); ottracer.addDecorator(new TestSEDASpanDecorator()); @@ -73,10 +79,10 @@ public class CamelOpenTelemetryTestSupport extends CamelTestSupport { } protected void verify(boolean async) { - List<SpanData> spans = inMemorytracing.getSpanExporter().getFinishedSpanItems(); + List<SpanData> spans = inMemorySpanExporter.getFinishedSpanItems(); spans.forEach(mockSpan -> { System.out.println("Span: " + mockSpan); - System.out.println("\tComponent: " + mockSpan.getAttributes().get("component")); + System.out.println("\tComponent: " + mockSpan.getAttributes().get(COMPONENT_KEY)); System.out.println("\tTags: " + mockSpan.getAttributes()); System.out.println("\tLogs: "); @@ -99,8 +105,8 @@ public class CamelOpenTelemetryTestSupport extends CamelTestSupport { protected SpanData findSpan(SpanTestData testdata, List<SpanData> spans) { return spans.stream().filter(s -> { boolean matched = s.getName().equals(testdata.getOperation()); - if (s.getAttributes().get("camel-uri") != null) { - matched = matched && s.getAttributes().get("camel.uri").equals(testdata.getUri()); + if (s.getAttributes().get(CAMEL_URI_KEY) != null) { + matched = matched && s.getAttributes().get(CAMEL_URI_KEY).equals(testdata.getUri()); } matched = matched && s.getKind().equals(testdata.getKind()); return matched; @@ -112,22 +118,18 @@ public class CamelOpenTelemetryTestSupport extends CamelTestSupport { } protected void verifyTraceSpanNumbers(int numOfTraces, int numSpansPerTrace) { - Map<TraceId, List<SpanData>> traces = new HashMap<>(); + Map<String, List<SpanData>> traces = new HashMap<>(); - List<SpanData> finishedSpans = inMemorytracing.getSpanExporter().getFinishedSpanItems(); + List<SpanData> finishedSpans = inMemorySpanExporter.getFinishedSpanItems(); // Sort spans into separate traces for (int i = 0; i < finishedSpans.size(); i++) { - List<SpanData> spans = traces.get(finishedSpans.get(i).getTraceId()); - if (spans == null) { - spans = new ArrayList<>(); - traces.put(finishedSpans.get(i).getTraceId(), spans); - } + List<SpanData> spans = traces.computeIfAbsent(finishedSpans.get(i).getTraceId(), k -> new ArrayList<>()); spans.add(finishedSpans.get(i)); } assertEquals(numOfTraces, traces.size()); - for (Map.Entry<TraceId, List<SpanData>> spans : traces.entrySet()) { + for (Map.Entry<String, List<SpanData>> spans : traces.entrySet()) { assertEquals(numSpansPerTrace, spans.getValue().size()); } } @@ -136,7 +138,7 @@ public class CamelOpenTelemetryTestSupport extends CamelTestSupport { SpanData span = spans.get(index); SpanTestData td = testdata[index]; - String component = span.getAttributes().get("component").getStringValue(); + String component = span.getAttributes().get(COMPONENT_KEY); assertNotNull(component); if (td.getUri() != null) { @@ -144,8 +146,8 @@ public class CamelOpenTelemetryTestSupport extends CamelTestSupport { } if ("camel-seda".equals(component)) { - assertNotNull(span.getAttributes().get("pre")); - assertNotNull(span.getAttributes().get("post")); + assertNotNull(span.getAttributes().get(PRE_KEY)); + assertNotNull(span.getAttributes().get(POST_KEY)); } assertEquals(td.getOperation(), span.getName(), td.getLabel()); @@ -155,8 +157,7 @@ public class CamelOpenTelemetryTestSupport extends CamelTestSupport { if (!td.getLogMessages().isEmpty()) { assertEquals(td.getLogMessages().size(), span.getEvents().size(), td.getLabel()); for (int i = 0; i < td.getLogMessages().size(); i++) { - assertEquals(td.getLogMessages().get(i), - span.getEvents().get(i).getAttributes().get("message").getStringValue()); + assertEquals(td.getLogMessages().get(i), span.getEvents().get(i).getAttributes().get(MESSAGE_KEY)); } } @@ -165,15 +166,14 @@ public class CamelOpenTelemetryTestSupport extends CamelTestSupport { } if (!td.getTags().isEmpty()) { for (Map.Entry<String, String> entry : td.getTags().entrySet()) { - assertEquals(entry.getValue(), span.getAttributes().get(entry.getKey()).getStringValue()); + assertEquals(entry.getValue(), span.getAttributes().get(AttributeKey.stringKey(entry.getKey()))); } } } protected void verifySameTrace() { - assertEquals(1, - inMemorytracing.getSpanExporter().getFinishedSpanItems().stream().map(s -> s.getTraceId()).distinct().count()); + assertEquals(1, inMemorySpanExporter.getFinishedSpanItems().stream().map(s -> s.getTraceId()).distinct().count()); } } diff --git a/components/camel-opentelemetry/src/test/java/org/apache/camel/opentelemetry/SpanTestData.java b/components/camel-opentelemetry/src/test/java/org/apache/camel/opentelemetry/SpanTestData.java index 9c9e64d..f7d8ba3 100644 --- a/components/camel-opentelemetry/src/test/java/org/apache/camel/opentelemetry/SpanTestData.java +++ b/components/camel-opentelemetry/src/test/java/org/apache/camel/opentelemetry/SpanTestData.java @@ -22,7 +22,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import io.opentelemetry.trace.Span; +import io.opentelemetry.api.trace.Span; public class SpanTestData { diff --git a/components/camel-tracing/src/main/java/org/apache/camel/tracing/ExtractAdapter.java b/components/camel-tracing/src/main/java/org/apache/camel/tracing/ExtractAdapter.java index cc670db..e2ed5bf 100644 --- a/components/camel-tracing/src/main/java/org/apache/camel/tracing/ExtractAdapter.java +++ b/components/camel-tracing/src/main/java/org/apache/camel/tracing/ExtractAdapter.java @@ -18,9 +18,12 @@ package org.apache.camel.tracing; import java.util.Iterator; import java.util.Map; +import java.util.Set; public interface ExtractAdapter { Iterator<Map.Entry<String, String>> iterator(); Object get(String key); + + Set<String> keys(); } diff --git a/components/camel-tracing/src/main/java/org/apache/camel/tracing/propagation/CamelHeadersExtractAdapter.java b/components/camel-tracing/src/main/java/org/apache/camel/tracing/propagation/CamelHeadersExtractAdapter.java index f849d53..c1be58b 100644 --- a/components/camel-tracing/src/main/java/org/apache/camel/tracing/propagation/CamelHeadersExtractAdapter.java +++ b/components/camel-tracing/src/main/java/org/apache/camel/tracing/propagation/CamelHeadersExtractAdapter.java @@ -19,6 +19,7 @@ package org.apache.camel.tracing.propagation; import java.util.HashMap; import java.util.Iterator; import java.util.Map; +import java.util.Set; import org.apache.camel.tracing.ExtractAdapter; @@ -40,4 +41,9 @@ public final class CamelHeadersExtractAdapter implements ExtractAdapter { public Object get(String key) { return this.map.get(key); } + + @Override + public Set<String> keys() { + return map.keySet(); + } } diff --git a/components/camel-tracing/src/main/java/org/apache/camel/tracing/propagation/CamelMessagingHeadersExtractAdapter.java b/components/camel-tracing/src/main/java/org/apache/camel/tracing/propagation/CamelMessagingHeadersExtractAdapter.java index 4c71cd3..4765a7c 100644 --- a/components/camel-tracing/src/main/java/org/apache/camel/tracing/propagation/CamelMessagingHeadersExtractAdapter.java +++ b/components/camel-tracing/src/main/java/org/apache/camel/tracing/propagation/CamelMessagingHeadersExtractAdapter.java @@ -20,6 +20,7 @@ import java.nio.charset.StandardCharsets; import java.util.HashMap; import java.util.Iterator; import java.util.Map; +import java.util.Set; import org.apache.camel.tracing.ExtractAdapter; @@ -50,6 +51,11 @@ public final class CamelMessagingHeadersExtractAdapter implements ExtractAdapter return this.map.get(key); } + @Override + public Set<String> keys() { + return map.keySet(); + } + /** * Decode dashes (encoded in {@link CamelMessagingHeadersInjectAdapter} Dash encoding and decoding is required by * JMS. This is implemented here rather than specifically to JMS so that other Camel messaging endpoints can take diff --git a/parent/pom.xml b/parent/pom.xml index dc26ce0..44318a1 100644 --- a/parent/pom.xml +++ b/parent/pom.xml @@ -436,7 +436,7 @@ <ognl-version>3.1.12</ognl-version> <openjpa-version>3.1.2</openjpa-version> <openstack4j-version>3.8</openstack4j-version> - <opentelemetry-version>0.8.0</opentelemetry-version> + <opentelemetry-version>0.11.0</opentelemetry-version> <!-- cannot upgrade opentracing until https://github.com/eclipse/microprofile-opentracing v2 is released --> <opentracing-version>0.31.0</opentracing-version> <opentracing-tracerresolver-version>0.1.8</opentracing-tracerresolver-version>