diff --git a/packages/dd-trace/src/opentelemetry/span.js b/packages/dd-trace/src/opentelemetry/span.js index 2cf4b20cb42..a7918375161 100644 --- a/packages/dd-trace/src/opentelemetry/span.js +++ b/packages/dd-trace/src/opentelemetry/span.js @@ -10,7 +10,7 @@ const { timeInputToHrTime } = require('@opentelemetry/core') const tracer = require('../../') const DatadogSpan = require('../opentracing/span') const { ERROR_MESSAGE, ERROR_TYPE, ERROR_STACK, IGNORE_OTEL_ERROR } = require('../constants') -const { SERVICE_NAME, RESOURCE_NAME } = require('../../../../ext/tags') +const { SERVICE_NAME, RESOURCE_NAME, SPAN_KIND } = require('../../../../ext/tags') const kinds = require('../../../../ext/kinds') const SpanContext = require('./span_context') @@ -146,7 +146,8 @@ class Span { integrationName: parentTracer?._isOtelLibrary ? 'otel.library' : 'otel', tags: { [SERVICE_NAME]: _tracer._service, - [RESOURCE_NAME]: spanName + [RESOURCE_NAME]: spanName, + [SPAN_KIND]: spanKindNames[kind] }, links }, _tracer._debug) diff --git a/packages/dd-trace/test/opentelemetry/span.spec.js b/packages/dd-trace/test/opentelemetry/span.spec.js index 020ae132479..c35996f77b5 100644 --- a/packages/dd-trace/test/opentelemetry/span.spec.js +++ b/packages/dd-trace/test/opentelemetry/span.spec.js @@ -17,7 +17,7 @@ const SpanContext = require('../../src/opentelemetry/span_context') const { NoopSpanProcessor } = require('../../src/opentelemetry/span_processor') const { ERROR_MESSAGE, ERROR_STACK, ERROR_TYPE, IGNORE_OTEL_ERROR } = require('../../src/constants') -const { SERVICE_NAME, RESOURCE_NAME } = require('../../../../ext/tags') +const { SERVICE_NAME, RESOURCE_NAME, SPAN_KIND } = require('../../../../ext/tags') const kinds = require('../../../../ext/kinds') const format = require('../../src/format') @@ -235,6 +235,13 @@ describe('OTel Span', () => { expect(context._tags[RESOURCE_NAME]).to.equal('name') }) + it('should copy span kind to span.kind', () => { + const span = makeSpan('name', { kind: api.SpanKind.CONSUMER }) + + const context = span._ddSpan.context() + expect(context._tags[SPAN_KIND]).to.equal(kinds.CONSUMER) + }) + it('should expose span context', () => { const span = makeSpan('name')