diff --git a/observability/opentelemetry-backend/src/main/scala/sttp/client4/opentelemetry/OpenTelemetryTracingBackend.scala b/observability/opentelemetry-backend/src/main/scala/sttp/client4/opentelemetry/OpenTelemetryTracingBackend.scala index a631fe7866..3308790678 100644 --- a/observability/opentelemetry-backend/src/main/scala/sttp/client4/opentelemetry/OpenTelemetryTracingBackend.scala +++ b/observability/opentelemetry-backend/src/main/scala/sttp/client4/opentelemetry/OpenTelemetryTracingBackend.scala @@ -1,6 +1,7 @@ package sttp.client4.opentelemetry import io.opentelemetry.api.OpenTelemetry +import io.opentelemetry.api.trace.SpanKind import io.opentelemetry.context.Context import io.opentelemetry.context.propagation.TextMapSetter import sttp.capabilities.Effect @@ -52,6 +53,7 @@ class OpenTelemetryTracingBackend[F[_], P](delegate: GenericBackend[F, P], confi .eval { config.tracer .spanBuilder(config.spanName(request)) + .setSpanKind(SpanKind.CLIENT) .setAllAttributes(config.requestAttributes(request)) .startSpan() } diff --git a/observability/opentelemetry-backend/src/test/scala/sttp/client4/opentelemetry/OpenTelemetryTracingBackendTest.scala b/observability/opentelemetry-backend/src/test/scala/sttp/client4/opentelemetry/OpenTelemetryTracingBackendTest.scala index d00388fc2a..70472990f7 100644 --- a/observability/opentelemetry-backend/src/test/scala/sttp/client4/opentelemetry/OpenTelemetryTracingBackendTest.scala +++ b/observability/opentelemetry-backend/src/test/scala/sttp/client4/opentelemetry/OpenTelemetryTracingBackendTest.scala @@ -33,6 +33,7 @@ class OpenTelemetryTracingBackendTest extends AnyFlatSpec with Matchers { val span = spanItems.head span.getName() shouldBe "GET" + span.getKind() shouldBe io.opentelemetry.api.trace.SpanKind.CLIENT val attributes = span.getAttributes().asMap().asScala attributes(UrlAttributes.URL_FULL) shouldBe "http://test.com/foo" @@ -58,6 +59,7 @@ class OpenTelemetryTracingBackendTest extends AnyFlatSpec with Matchers { spanItems should have size 1 val span = spanItems.head + span.getKind() shouldBe io.opentelemetry.api.trace.SpanKind.CLIENT val attributes = span.getAttributes().asMap().asScala attributes(UrlAttributes.URL_FULL) shouldBe "http://test.com/foo" attributes(ErrorAttributes.ERROR_TYPE) shouldBe "RuntimeException"