From e407935a197fe6cf9dcc4151335b81f8823a4079 Mon Sep 17 00:00:00 2001 From: Munir Abdinur Date: Thu, 24 Oct 2024 13:14:54 -0400 Subject: [PATCH 1/3] fix: remove version tag if dd_service is not applied --- lib/datadog/tracing/tracer.rb | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/lib/datadog/tracing/tracer.rb b/lib/datadog/tracing/tracer.rb index a16384ed857..37cde2cf01b 100644 --- a/lib/datadog/tracing/tracer.rb +++ b/lib/datadog/tracing/tracer.rb @@ -394,7 +394,7 @@ def start_span( on_error: on_error, resource: resource, service: service, - tags: resolve_tags(tags), + tags: resolve_tags(tags, service), type: type, id: id, &block @@ -408,7 +408,7 @@ def start_span( resource: resource, service: service, start_time: start_time, - tags: resolve_tags(tags), + tags: resolve_tags(tags, service), type: type, id: id ) @@ -420,15 +420,20 @@ def start_span( end # rubocop:enable Lint/UnderscorePrefixedVariableName - def resolve_tags(tags) - if @tags.any? && tags - # Combine default tags with provided tags, - # preferring provided tags. - @tags.merge(tags) - else - # Use provided tags or default tags if none. - tags || @tags.dup + def resolve_tags(tags, service) + merged_tags = if @tags.any? && tags + # Combine default tags with provided tags, + # preferring provided tags. + @tags.merge(tags) + else + # Use provided tags or default tags if none. + tags || @tags.dup + end + # Remove version tag if service is not the default service + if merged_tags.key?(Core::Environment::Ext::TAG_VERSION) && service != @default_service + merged_tags.delete(Core::Environment::Ext::TAG_VERSION) end + merged_tags end # Manually activate and deactivate the trace, when the span completes. From 8a6e086ceea361ede01fe1f515075760e6803156 Mon Sep 17 00:00:00 2001 From: Munir Abdinur Date: Thu, 24 Oct 2024 15:22:56 -0400 Subject: [PATCH 2/3] add test --- spec/datadog/tracing/tracer_spec.rb | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/spec/datadog/tracing/tracer_spec.rb b/spec/datadog/tracing/tracer_spec.rb index cbed78e91f5..8d8c8605ca3 100644 --- a/spec/datadog/tracing/tracer_spec.rb +++ b/spec/datadog/tracing/tracer_spec.rb @@ -126,6 +126,18 @@ expect(span.get_tag('my')).to eq('tag') end + context 'contains version and span.service is not equal to the default tracer service' do + let(:tracer_options) { { default_service: 'global-service', tags: { 'version' => '1.1.0' } } } + let(:service) { 'my-service' } + it 'does not set version on the span' do + expect(tracer.default_service).to eq('global-service') + expect(span.service).not_to eq('my-service') + + expect(tracer.tags).to include('version' => '1.1.0') + expect(span.tags).not_to include('version') + end + end + context 'and default tags are set on the tracer' do let(:tracer_options) { { tags: default_tags } } From 919bb0e857b51472b21180af488c13a37661be78 Mon Sep 17 00:00:00 2001 From: Munir Abdinur Date: Thu, 24 Oct 2024 15:35:32 -0400 Subject: [PATCH 3/3] address nit --- spec/datadog/tracing/tracer_spec.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/spec/datadog/tracing/tracer_spec.rb b/spec/datadog/tracing/tracer_spec.rb index 8d8c8605ca3..3e587b6d6e6 100644 --- a/spec/datadog/tracing/tracer_spec.rb +++ b/spec/datadog/tracing/tracer_spec.rb @@ -127,14 +127,14 @@ end context 'contains version and span.service is not equal to the default tracer service' do - let(:tracer_options) { { default_service: 'global-service', tags: { 'version' => '1.1.0' } } } + let(:tracer_options) { { default_service: 'global-service', tags: { version: '1.1.0' } } } let(:service) { 'my-service' } it 'does not set version on the span' do expect(tracer.default_service).to eq('global-service') expect(span.service).not_to eq('my-service') - expect(tracer.tags).to include('version' => '1.1.0') - expect(span.tags).not_to include('version') + expect(tracer.tags).to include(version: '1.1.0') + expect(span.tags).not_to include(:version) end end