diff --git a/sdk/core/azure-core-tracing-opentelemetry/src/main/java/com/azure/core/tracing/opentelemetry/OpenTelemetryTracer.java b/sdk/core/azure-core-tracing-opentelemetry/src/main/java/com/azure/core/tracing/opentelemetry/OpenTelemetryTracer.java index c703128b455a7..98063f24b582e 100644 --- a/sdk/core/azure-core-tracing-opentelemetry/src/main/java/com/azure/core/tracing/opentelemetry/OpenTelemetryTracer.java +++ b/sdk/core/azure-core-tracing-opentelemetry/src/main/java/com/azure/core/tracing/opentelemetry/OpenTelemetryTracer.java @@ -31,6 +31,8 @@ import java.util.function.BiConsumer; import java.util.function.Function; +import static java.util.Collections.singletonMap; + /** * Basic tracing implementation class for use with REST and AMQP Service Clients to create {@link Span} and in-process * context propagation. Singleton OpenTelemetry tracer capable of starting and exporting spans. @@ -150,16 +152,15 @@ public Context start(String spanName, StartSpanOptions options, Context context) spanBuilder.setStartTimestamp(options.getStartTimestamp()); } - Span span = spanBuilder.startSpan(); - if (span.isRecording()) { - // If span is sampled in, add additional attributes - - String tracingNamespace = getAzNamespace(context); - if (tracingNamespace != null) { - OpenTelemetryUtils.addAttribute(span, AZ_TRACING_NAMESPACE_KEY, tracingNamespace); - } + String tracingNamespace = getAzNamespace(context); + if (tracingNamespace != null) { + Attributes attributes + = OpenTelemetryUtils.convert(singletonMap(AZ_TRACING_NAMESPACE_KEY, tracingNamespace)); + spanBuilder.setAllAttributes(attributes); } + Span span = spanBuilder.startSpan(); + return context.addData(PARENT_TRACE_CONTEXT_KEY, (traceContext != null ? traceContext : io.opentelemetry.context.Context.current()).with(span)); }