Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
109 commits
Select commit Hold shift + click to select a range
d7ca6cf
set service via shared code path
emmettbutler Mar 18, 2026
3197053
set service source for spans created directly via custom instrumentation
emmettbutler Mar 18, 2026
1d532e0
move all integrations that set service= to private code path
emmettbutler Mar 18, 2026
7fe5754
lint
emmettbutler Mar 18, 2026
96a40ff
Merge branch 'main' into emmett.butler/manual-tracing-svc-src
emmettbutler Mar 18, 2026
340f412
merge whoopsie
emmettbutler Mar 18, 2026
1782209
do service mapping
emmettbutler Mar 18, 2026
1381d62
deduplicate service setting and map resolution
emmettbutler Mar 18, 2026
d94cbbf
typing
emmettbutler Mar 18, 2026
0a1fced
typing
emmettbutler Mar 18, 2026
d59b53c
fix default to m
emmettbutler Mar 18, 2026
4ff3111
use a constant
emmettbutler Mar 18, 2026
c490c10
whoopsie
emmettbutler Mar 18, 2026
38c6a32
old imports
emmettbutler Mar 18, 2026
8144c5a
style
emmettbutler Mar 18, 2026
c5ce614
disallow blanks
emmettbutler Mar 18, 2026
f6378a6
update some snapshots
emmettbutler Mar 18, 2026
74e05ef
fix cherrypy snapshots, llmobs integration, and appsec tests
emmettbutler Mar 18, 2026
a577a8a
lint
emmettbutler Mar 18, 2026
e71c526
lint
emmettbutler Mar 18, 2026
b6b6bdf
lint
emmettbutler Mar 18, 2026
9bf51cc
fix some snapshots
emmettbutler Mar 18, 2026
ed2ebf4
lint
emmettbutler Mar 18, 2026
409e850
deleting the tag might have been ill-advised
emmettbutler Mar 19, 2026
9ec9a8f
better handling of inherited services and nested integrations like fa…
emmettbutler Mar 19, 2026
fef08ee
fix fastapi expectations
emmettbutler Mar 19, 2026
dc4561a
fix sanic expectations
emmettbutler Mar 19, 2026
4e7e614
fix missing attr
emmettbutler Mar 19, 2026
dec03d0
setting service here is actually ok because span.__init__ doesnt over…
emmettbutler Mar 19, 2026
200f45e
update test expectations in flask, kafka, httpx suites
emmettbutler Mar 23, 2026
61f4456
fix svc_src and expectations for botocore
emmettbutler Mar 23, 2026
9590d35
fix a flask snapshot
emmettbutler Mar 23, 2026
57f924a
fix some django snapshots
emmettbutler Mar 23, 2026
68c2fb3
fix some django and fastapi snapshots
emmettbutler Mar 23, 2026
e572d3f
fmt
emmettbutler Mar 23, 2026
0ab845d
fix some psycopg snapshots
emmettbutler Mar 23, 2026
b500d76
ignore svc_src in pydantic
emmettbutler Mar 23, 2026
2343f2d
Merge branch 'main' into emmett.butler/manual-tracing-svc-src
emmettbutler Mar 23, 2026
cf4b27a
deduplicate snapshot ignore fields in openai test file
emmettbutler Mar 23, 2026
ca8cd26
Merge branch 'emmett.butler/openai-ignores-deduplicate' into emmett.b…
emmettbutler Mar 23, 2026
13664a1
more ignores
emmettbutler Mar 23, 2026
4ba2300
more ignores
emmettbutler Mar 24, 2026
ffc890c
lint
emmettbutler Mar 24, 2026
438d865
more ignores
emmettbutler Mar 24, 2026
c3fd8cb
lint
emmettbutler Mar 24, 2026
0e611d8
Merge branch 'main' into emmett.butler/manual-tracing-svc-src
emmettbutler Mar 24, 2026
d7cc37b
fix more tests
emmettbutler Mar 24, 2026
5631985
more ignores;
emmettbutler Mar 24, 2026
83909ca
more ignores
emmettbutler Mar 24, 2026
4d11dc1
more ignores
emmettbutler Mar 24, 2026
e61b566
fmt
emmettbutler Mar 24, 2026
15cc8f6
fix django expectation
emmettbutler Mar 24, 2026
9581977
lint
emmettbutler Mar 25, 2026
086e314
fix django expectation
emmettbutler Mar 25, 2026
1ba18ed
fix debug expectation
emmettbutler Mar 25, 2026
fdc8696
lint
emmettbutler Mar 25, 2026
20a6e3d
update llmobs expectation
emmettbutler Mar 25, 2026
a4d5b0b
undo
emmettbutler Mar 25, 2026
246b405
fix ray failure
emmettbutler Mar 25, 2026
d2cee3c
format snaps
emmettbutler Mar 25, 2026
a670cd5
Merge branch 'main' into emmett.butler/manual-tracing-svc-src
emmettbutler Mar 25, 2026
1738d2d
there is a global way to ignore tags in snapshot tests
emmettbutler Mar 25, 2026
4046dfb
undo the snapshot changes
emmettbutler Mar 25, 2026
bdcf7fd
Merge branch 'main' into emmett.butler/manual-tracing-svc-src
emmettbutler Mar 25, 2026
ae621b8
undo the snapshot changes
emmettbutler Mar 25, 2026
d8e5fb3
redo
emmettbutler Mar 25, 2026
62d1794
update system tests
emmettbutler Mar 25, 2026
24750aa
not global
emmettbutler Mar 26, 2026
0b04934
unused import[
emmettbutler Mar 26, 2026
95c12e3
avoid setting an extra tag
emmettbutler Mar 26, 2026
bf6bc91
unused import
emmettbutler Mar 26, 2026
3b30c63
undo some test changes
emmettbutler Mar 26, 2026
c9e69e3
undo
emmettbutler Mar 26, 2026
ccbd33d
update systests
emmettbutler Mar 26, 2026
d3a6a9d
Merge branch 'main' into emmett.butler/manual-tracing-svc-src
emmettbutler Mar 30, 2026
17ae1e6
inherit service sour e
emmettbutler Mar 30, 2026
5c27fc2
inherit service sour e
emmettbutler Mar 30, 2026
90a7738
use branched system-tests
emmettbutler Mar 30, 2026
8b74fd3
no blanks
emmettbutler Mar 30, 2026
d1c6b08
expect svc_src where appropriate
emmettbutler Mar 30, 2026
fbfcc2b
fix test
emmettbutler Mar 30, 2026
b749d6c
faster way to set attribute
emmettbutler Mar 30, 2026
5dea2ed
typing
emmettbutler Mar 30, 2026
9b15a94
style
emmettbutler Mar 30, 2026
20a1c08
wrong config
emmettbutler Mar 30, 2026
800a518
latest system-tests
emmettbutler Mar 31, 2026
459c2eb
Merge branch 'main' into emmett.butler/manual-tracing-svc-src
emmettbutler Apr 1, 2026
2476b69
Merge branch 'main' into emmett.butler/manual-tracing-svc-src
emmettbutler Apr 1, 2026
1f98b0b
Merge branch 'main' into emmett.butler/manual-tracing-svc-src
emmettbutler Apr 1, 2026
9cc04ec
bump failing benchmark to account for new tag in most start_span exec…
emmettbutler Apr 1, 2026
ec4a195
Merge branch 'main' into emmett.butler/manual-tracing-svc-src
emmettbutler Apr 1, 2026
12f58bb
Merge branch 'main' into emmett.butler/manual-tracing-svc-src
emmettbutler Apr 1, 2026
4477ee9
Merge branch 'main' into emmett.butler/manual-tracing-svc-src
emmettbutler Apr 6, 2026
2f349b6
Merge branch 'main' into emmett.butler/manual-tracing-svc-src
emmettbutler Apr 6, 2026
d713dbb
Merge branch 'main' into emmett.butler/manual-tracing-svc-src
emmettbutler Apr 6, 2026
a0813b6
more benchmark headroom
emmettbutler Apr 6, 2026
8b97b3d
Merge branch 'main' into emmett.butler/manual-tracing-svc-src
emmettbutler Apr 7, 2026
b17e14e
Merge branch 'main' into emmett.butler/manual-tracing-svc-src
emmettbutler Apr 7, 2026
d2ddab4
Merge branch 'main' into emmett.butler/manual-tracing-svc-src
emmettbutler Apr 7, 2026
daa7c5d
Merge branch 'main' into emmett.butler/manual-tracing-svc-src
emmettbutler Apr 7, 2026
94442af
Merge branch 'main' into emmett.butler/manual-tracing-svc-src
emmettbutler Apr 7, 2026
3d8a246
Merge branch 'main' into emmett.butler/manual-tracing-svc-src
emmettbutler Apr 8, 2026
037b941
bump failing benchmark to account for new tag in most start_span exec…
emmettbutler Apr 8, 2026
e591d89
bump failing benchmark to account for new tag in most start_span exec…
emmettbutler Apr 8, 2026
18e922b
latest system-tests
emmettbutler Apr 8, 2026
4b4d3f1
latest system-tests
emmettbutler Apr 8, 2026
e5cd7f0
Merge branch 'main' into emmett.butler/manual-tracing-svc-src
emmettbutler Apr 8, 2026
d94efd6
Merge branch 'main' into emmett.butler/manual-tracing-svc-src
emmettbutler Apr 8, 2026
00492ca
Merge branch 'main' into emmett.butler/manual-tracing-svc-src
emmettbutler Apr 8, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions .github/workflows/system-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ jobs:
persist-credentials: false
repository: 'DataDog/system-tests'
# Automatically managed, use scripts/update-system-tests-version to update
ref: 'baa899e768859fce1be7e98cc2518d810745d65a'
ref: '5ede8c7064df9245bf0323d7e027e92fc8740a9e'

- name: Download wheels to binaries directory
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
Expand Down Expand Up @@ -148,7 +148,7 @@ jobs:
persist-credentials: false
repository: 'DataDog/system-tests'
# Automatically managed, use scripts/update-system-tests-version to update
ref: 'baa899e768859fce1be7e98cc2518d810745d65a'
ref: '5ede8c7064df9245bf0323d7e027e92fc8740a9e'

- name: Build runner
uses: ./.github/actions/install_runner
Expand Down Expand Up @@ -369,7 +369,7 @@ jobs:
persist-credentials: false
repository: 'DataDog/system-tests'
# Automatically managed, use scripts/update-system-tests-version to update
ref: 'baa899e768859fce1be7e98cc2518d810745d65a'
ref: '5ede8c7064df9245bf0323d7e027e92fc8740a9e'
- name: Download wheels to binaries directory
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
Expand Down Expand Up @@ -513,4 +513,4 @@ jobs:
needs.integration-frameworks-system-tests.result == 'cancelled'||
needs.tracer-release.result == 'failure' ||
needs.tracer-release.result == 'cancelled'
run: exit 1
run: exit 1
2 changes: 1 addition & 1 deletion .gitlab-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ variables:
DD_VPA_TEMPLATE: "vpa-template-cpu-p70-10percent-2x-oom-min-cap"
# CI_DEBUG_SERVICES: "true"
# Automatically managed, use scripts/update-system-tests-version to update
SYSTEM_TESTS_REF: "baa899e768859fce1be7e98cc2518d810745d65a"
SYSTEM_TESTS_REF: "5ede8c7064df9245bf0323d7e027e92fc8740a9e"

# Profiling native build image (built from dd/images/dd-trace-py/profiling_native)
PROFILING_NATIVE_IMAGE: "registry.ddbuild.io/dd-trace-py:v103334885-be1888c-profiling_native"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -976,7 +976,7 @@ experiments:
- max_rss_usage < 53.00 MB
- name: span-start-finish
thresholds:
- execution_time < 58.00 ms
- execution_time < 58.50 ms
- max_rss_usage < 38.00 MB
- name: span-start-finish-telemetry
thresholds:
Expand Down Expand Up @@ -1064,11 +1064,11 @@ experiments:
- max_rss_usage < 39.25 MB
- name: tracer-medium
thresholds:
- execution_time < 3.30 ms
- execution_time < 3.50 ms
- max_rss_usage < 38.75 MB
- name: tracer-small
thresholds:
- execution_time < 0.38 ms
- execution_time < 0.39 ms
- max_rss_usage < 38.75 MB

# codeprovenancefork
Expand Down
2 changes: 1 addition & 1 deletion .gitlab/services.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
DD_POOL_TRACE_CHECK_FAILURES: true
DD_DISABLE_ERROR_RESPONSES: true
ENABLED_CHECKS: trace_content_length,trace_stall,meta_tracer_version_header,trace_count_header,trace_peer_service,trace_dd_service
SNAPSHOT_IGNORED_ATTRS: span_id,trace_id,parent_id,duration,start,metrics.system.pid,metrics.system.process_id,metrics.process_id,meta.runtime-id,meta._dd.p.tid,meta.pathway.hash,metrics._dd.tracer_kr,meta._dd.parent_id,meta.kafka.cluster_id,meta._dd.git.repository_url
SNAPSHOT_IGNORED_ATTRS: span_id,trace_id,parent_id,duration,start,metrics.system.pid,metrics.system.process_id,metrics.process_id,meta.runtime-id,meta._dd.p.tid,meta.pathway.hash,metrics._dd.tracer_kr,meta._dd.parent_id,meta.kafka.cluster_id,meta._dd.git.repository_url,meta._dd.svc_src
VCR_PROVIDER_MAP: azure_openai=https://llmobs-test-resource.openai.azure.com/
mongo:
name: registry.ddbuild.io/images/mirror/mongo:6.0.5
Expand Down
6 changes: 3 additions & 3 deletions ddtrace/_trace/subscribers/_base.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
from ddtrace.constants import _SPAN_MEASURED_KEY
from ddtrace.constants import SPAN_KIND
from ddtrace.contrib import trace_utils
from ddtrace.contrib.internal.trace_utils import maybe_set_service_source_tag
from ddtrace.contrib.internal.trace_utils import set_service_and_source
from ddtrace.internal import core
from ddtrace.internal.constants import COMPONENT
from ddtrace.internal.core.subscriber import ContextSubscriber
Expand All @@ -36,7 +36,7 @@ def _finish_span(
return

integration_config = ctx.get_item("integration_config")
maybe_set_service_source_tag(span, integration_config or dict())
set_service_and_source(span, ctx.get_item("service"), integration_config or dict())

exc_type, exc_value, exc_traceback = exc_info
if exc_type and exc_value and exc_traceback:
Expand Down Expand Up @@ -96,7 +96,7 @@ def _start_span(ctx: core.ExecutionContext[TracingEventType]) -> Span:
if event.measured:
span._set_attribute(_SPAN_MEASURED_KEY, 1)

maybe_set_service_source_tag(span, integration_config or dict())
set_service_and_source(span, ctx.get_item("service"), integration_config or dict())
ctx.span = span

if config._inferred_proxy_services_enabled:
Expand Down
6 changes: 3 additions & 3 deletions ddtrace/_trace/trace_handlers.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@
from ddtrace.contrib.internal.mlflow.constants import MLflowLogType
from ddtrace.contrib.internal.trace_utils import _copy_trace_level_tags
from ddtrace.contrib.internal.trace_utils import _set_url_tag
from ddtrace.contrib.internal.trace_utils import maybe_set_service_source_tag
from ddtrace.contrib.internal.trace_utils import set_service_and_source
from ddtrace.ext import SpanKind
from ddtrace.ext import SpanLinkKind
from ddtrace.ext import SpanTypes
Expand Down Expand Up @@ -175,7 +175,7 @@ def _start_span(ctx: core.ExecutionContext, call_trace: bool = True, **kwargs) -
if ctx.get_item("measured"):
span._set_attribute(_SPAN_MEASURED_KEY, 1)

maybe_set_service_source_tag(span, integration_config or dict())
set_service_and_source(span, ctx.get_item("service"), integration_config or dict())
ctx.span = span

if config._inferred_proxy_services_enabled:
Expand All @@ -198,7 +198,7 @@ def _finish_span(
return

integration_config = ctx.get_item("integration_config")
maybe_set_service_source_tag(span, integration_config or dict())
set_service_and_source(span, ctx.get_item("service"), integration_config or dict())

exc_type, exc_value, exc_traceback = exc_info
if exc_type and exc_value and exc_traceback:
Expand Down
10 changes: 9 additions & 1 deletion ddtrace/_trace/tracer.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@
from ddtrace.internal import debug
from ddtrace.internal import forksafe
from ddtrace.internal import hostname
from ddtrace.internal.constants import _SERVICE_SOURCE
from ddtrace.internal.constants import LOG_ATTR_ENV
from ddtrace.internal.constants import LOG_ATTR_SERVICE
from ddtrace.internal.constants import LOG_ATTR_SPAN_ID
Expand Down Expand Up @@ -470,11 +471,15 @@ def start_span(
# 2. Parent's service name (if defined)
# 3. Globally configured service name
# a. `config.service`/`DD_SERVICE`/`DD_TAGS`
service_source: str = ""
if service is None:
if parent:
service = parent.service
service_source = parent.get_tag(_SERVICE_SOURCE) or ""
else:
service = config.service
service = service_source = config.service
Comment thread
emmettbutler marked this conversation as resolved.
else:
service_source = "m"

# Update the service name based on any mapping
if service is not None:
Expand Down Expand Up @@ -530,6 +535,9 @@ def start_span(
if self._tags:
span.set_tags(self._tags)

if service and service_source:
span._set_attribute(_SERVICE_SOURCE, service_source)

if config.env:
span._set_attribute(ENV_KEY, config.env)

Expand Down
7 changes: 6 additions & 1 deletion ddtrace/contrib/internal/aiobotocore/patch.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
from ddtrace.constants import _SPAN_MEASURED_KEY
from ddtrace.constants import SPAN_KIND
from ddtrace.contrib.internal.trace_utils import ext_service
from ddtrace.contrib.internal.trace_utils import set_service_and_source
from ddtrace.contrib.internal.trace_utils import unwrap
from ddtrace.ext import SpanKind
from ddtrace.ext import SpanTypes
Expand Down Expand Up @@ -120,9 +121,13 @@ async def _wrapped_api_call(original_func, instance, args, kwargs):
schematize_cloud_api_operation(
"{}.command".format(endpoint_name), cloud_provider="aws", cloud_service=endpoint_name
),
service=ext_service(pin, config.aiobotocore, default=schematize_service_name(fallback_service)),
span_type=SpanTypes.HTTP,
) as span:
set_service_and_source(
span,
ext_service(pin, config.aiobotocore, default=schematize_service_name(fallback_service)),
config.aiobotocore,
)
span._set_attribute(COMPONENT, config.aiobotocore.integration_name)

# set span.kind tag equal to type of request
Expand Down
9 changes: 3 additions & 6 deletions ddtrace/contrib/internal/aiohttp/patch.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@
from ddtrace.constants import SPAN_KIND
from ddtrace.contrib.internal.trace_utils import ext_service
from ddtrace.contrib.internal.trace_utils import extract_netloc_and_query_info_from_url
from ddtrace.contrib.internal.trace_utils import maybe_set_service_source_tag
from ddtrace.contrib.internal.trace_utils import set_http_meta
from ddtrace.contrib.internal.trace_utils import set_service_and_source
from ddtrace.contrib.internal.trace_utils import unwrap
from ddtrace.contrib.internal.trace_utils import wrap
from ddtrace.ext import SpanKind
Expand Down Expand Up @@ -84,16 +84,13 @@ async def _traced_clientsession_request(func, instance, args, kwargs):
url: URL = base_url.join(raw_url) if base_url is not None else raw_url
params = kwargs.get("params")
headers = kwargs.get("headers") or {}
service: str = url.host if config.aiohttp_client.split_by_domain else ext_service(None, config.aiohttp_client)

with tracer.trace(
schematize_url_operation("aiohttp.request", protocol="http", direction=SpanDirection.OUTBOUND),
span_type=SpanTypes.HTTP,
service=ext_service(None, config.aiohttp_client),
) as span:
if config.aiohttp_client.split_by_domain:
span.service = url.host

maybe_set_service_source_tag(span, config.aiohttp)
set_service_and_source(span, service, config.aiohttp)

if config.aiohttp.distributed_tracing:
HTTPPropagator.inject(span.context, headers)
Expand Down
3 changes: 2 additions & 1 deletion ddtrace/contrib/internal/aiomysql/patch.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
from ddtrace.contrib import dbapi
from ddtrace.contrib import trace_utils
from ddtrace.contrib.internal.trace_utils import _convert_to_string
from ddtrace.contrib.internal.trace_utils import set_service_and_source
from ddtrace.ext import SpanKind
from ddtrace.ext import SpanTypes
from ddtrace.ext import db
Expand Down Expand Up @@ -76,10 +77,10 @@ async def _trace_method(self, method, resource, extra_tags, *args, **kwargs):

with tracer.trace(
self._self_datadog_name,
service=trace_utils.ext_service(pin, config.aiomysql),
resource=resource,
span_type=SpanTypes.SQL,
) as s:
set_service_and_source(s, trace_utils.ext_service(pin, config.aiomysql), config.aiomysql)
s._set_attribute(COMPONENT, config.aiomysql.integration_name)

# set span.kind to the type of request being performed
Expand Down
3 changes: 2 additions & 1 deletion ddtrace/contrib/internal/aiopg/connection.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
from ddtrace.constants import SPAN_KIND
from ddtrace.contrib import dbapi
from ddtrace.contrib import trace_utils
from ddtrace.contrib.internal.trace_utils import set_service_and_source
from ddtrace.ext import SpanKind
from ddtrace.ext import SpanTypes
from ddtrace.ext import db
Expand Down Expand Up @@ -37,10 +38,10 @@ async def _trace_method(self, method, resource, extra_tags, *args, **kwargs):

with tracer.trace(
self._datadog_name,
service=trace_utils.ext_service(pin, config.aiopg),
resource=resource,
span_type=SpanTypes.SQL,
) as s:
set_service_and_source(s, trace_utils.ext_service(pin, config.aiopg), config.aiopg)
s._set_attribute(COMPONENT, config.aiopg.integration_name)
s._set_attribute(db.SYSTEM, "postgresql")

Expand Down
3 changes: 2 additions & 1 deletion ddtrace/contrib/internal/algoliasearch/patch.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
from ddtrace.constants import _SPAN_MEASURED_KEY
from ddtrace.constants import SPAN_KIND
from ddtrace.contrib import trace_utils
from ddtrace.contrib.internal.trace_utils import set_service_and_source
from ddtrace.ext import SpanKind
from ddtrace.ext import SpanTypes
from ddtrace.internal.constants import COMPONENT
Expand Down Expand Up @@ -124,9 +125,9 @@ def _patched_search(func, instance, wrapt_args, wrapt_kwargs):

with tracer.trace(
schematize_cloud_api_operation("algoliasearch.search", cloud_provider="algoliasearch", cloud_service="search"),
service=trace_utils.ext_service(pin, config.algoliasearch),
span_type=SpanTypes.HTTP,
) as span:
set_service_and_source(span, trace_utils.ext_service(pin, config.algoliasearch), config.algoliasearch)
span._set_attribute(COMPONENT, config.algoliasearch.integration_name)

# set span.kind to the type of request being performed
Expand Down
8 changes: 4 additions & 4 deletions ddtrace/contrib/internal/asyncpg/patch.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
from ddtrace.constants import _SPAN_MEASURED_KEY
from ddtrace.constants import SPAN_KIND
from ddtrace.contrib.internal.trace_utils import ext_service
from ddtrace.contrib.internal.trace_utils import maybe_set_service_source_tag
from ddtrace.contrib.internal.trace_utils import set_service_and_source
from ddtrace.contrib.internal.trace_utils import unwrap
from ddtrace.contrib.internal.trace_utils import wrap
from ddtrace.contrib.internal.trace_utils_async import with_traced_module
Expand Down Expand Up @@ -95,8 +95,8 @@ async def _traced_connect(asyncpg, pin, func, instance, args, kwargs):
# When using a pool, there's a connection_class args
is_pool_context = "connection_class" in kwargs

with tracer.trace("postgres.connect", span_type=SpanTypes.SQL, service=ext_service(pin, config.asyncpg)) as span:
maybe_set_service_source_tag(span, config.asyncpg)
with tracer.trace("postgres.connect", span_type=SpanTypes.SQL) as span:
set_service_and_source(span, ext_service(pin, config.asyncpg), config.asyncpg)
span._set_attribute(COMPONENT, config.asyncpg.integration_name)
span._set_attribute(db.SYSTEM, DBMS_NAME)

Expand Down Expand Up @@ -126,9 +126,9 @@ async def _traced_query(pin, method, query, args, kwargs):
with tracer.trace(
schematize_database_operation("postgres.query", database_provider="postgresql"),
resource=query,
service=ext_service(pin, config.asyncpg),
span_type=SpanTypes.SQL,
) as span:
set_service_and_source(span, ext_service(pin, config.asyncpg), config.asyncpg)
span._set_attribute(COMPONENT, config.asyncpg.integration_name)
span._set_attribute(db.SYSTEM, DBMS_NAME)

Expand Down
5 changes: 3 additions & 2 deletions ddtrace/contrib/internal/boto/patch.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
from ddtrace._trace.utils_botocore.span_tags import _derive_peer_hostname
from ddtrace.constants import _SPAN_MEASURED_KEY
from ddtrace.constants import SPAN_KIND
from ddtrace.contrib.internal.trace_utils import set_service_and_source
from ddtrace.ext import SpanKind
from ddtrace.ext import SpanTypes
from ddtrace.ext import aws
Expand Down Expand Up @@ -89,9 +90,9 @@ def patched_query_request(original_func, instance, args, kwargs):
schematize_cloud_api_operation(
"{}.command".format(endpoint_name), cloud_provider="aws", cloud_service=endpoint_name
),
service=schematize_service_name("{}.{}".format(pin.service, endpoint_name)),
span_type=SpanTypes.HTTP,
) as span:
set_service_and_source(span, schematize_service_name("{}.{}".format(pin.service, endpoint_name)), config.boto)
span._set_attribute(COMPONENT, config.boto.integration_name)

# set span.kind to the type of request being performed
Expand Down Expand Up @@ -169,9 +170,9 @@ def patched_auth_request(original_func, instance, args, kwargs):
schematize_cloud_api_operation(
"{}.command".format(endpoint_name), cloud_provider="aws", cloud_service=endpoint_name
),
service=schematize_service_name("{}.{}".format(pin.service, endpoint_name)),
span_type=SpanTypes.HTTP,
) as span:
set_service_and_source(span, schematize_service_name("{}.{}".format(pin.service, endpoint_name)), config.boto)
span._set_attribute(_SPAN_MEASURED_KEY, 1)
if args:
http_method = get_argument_value(args, kwargs, 0, "method")
Expand Down
3 changes: 2 additions & 1 deletion ddtrace/contrib/internal/celery/app.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
from ddtrace.contrib.internal.celery.signals import trace_postrun
from ddtrace.contrib.internal.celery.signals import trace_prerun
from ddtrace.contrib.internal.celery.signals import trace_retry
from ddtrace.contrib.internal.trace_utils import set_service_and_source
from ddtrace.ext import SpanKind
from ddtrace.ext import SpanTypes
from ddtrace.internal import core
Expand Down Expand Up @@ -103,8 +104,8 @@ def _traced_beat_inner(func, instance, args, kwargs):
with tracer.trace(
"celery.beat.{}".format(fn_name),
span_type=SpanTypes.WORKER,
service=trace_utils.ext_service(pin, integration_config),
) as span:
set_service_and_source(span, trace_utils.ext_service(pin, integration_config), integration_config)
if resource_fn:
span.resource = resource_fn(args)
span._set_attribute(SPAN_KIND, SpanKind.PRODUCER)
Expand Down
13 changes: 5 additions & 8 deletions ddtrace/contrib/internal/celery/signals.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
from ddtrace.contrib.internal.celery.utils import retrieve_span_context
from ddtrace.contrib.internal.celery.utils import retrieve_task_id
from ddtrace.contrib.internal.celery.utils import set_tags_from_context
from ddtrace.contrib.internal.trace_utils import set_service_and_source
from ddtrace.ext import SpanKind
from ddtrace.ext import SpanTypes
from ddtrace.ext import net
Expand Down Expand Up @@ -53,10 +54,8 @@ def trace_prerun(*args, **kwargs):

# propagate the `Span` in the current task Context
service = config.celery["worker_service_name"]
span = tracer.trace(c.WORKER_ROOT_SPAN, service=service, resource=task.name, span_type=SpanTypes.WORKER)
# Use inline check for worker default service
if span.service == config.celery["_default_service_worker"]:
span.set_tag("_dd.svc_src", "celery")
span = tracer.trace(c.WORKER_ROOT_SPAN, resource=task.name, span_type=SpanTypes.WORKER)
set_service_and_source(span, service, config.celery, default_service_key="_default_service_worker")

# set span.kind to the type of request being performed
span._set_attribute(SPAN_KIND, SpanKind.CONSUMER)
Expand Down Expand Up @@ -128,10 +127,8 @@ def trace_before_publish(*args, **kwargs):
# apply some tags here because most of the data is not available
# in the task_after_publish signal
service = config.celery["producer_service_name"]
span = tracer.trace(c.PRODUCER_ROOT_SPAN, service=service, resource=task_name)
# Use inline check for producer default service
if span.service == config.celery["_default_service_producer"]:
span.set_tag("_dd.svc_src", "celery")
span = tracer.trace(c.PRODUCER_ROOT_SPAN, resource=task_name)
set_service_and_source(span, service, config.celery, default_service_key="_default_service_producer")

# Store an item called "task span" in case after_task_publish doesn't get called
core.set_item("task_span", span)
Expand Down
Loading
Loading