Skip to content

Commit 666658d

Browse files
committed
Fix issues with reading trace context from ddtrace
1 parent a7e617d commit 666658d

File tree

3 files changed

+39
-42
lines changed

3 files changed

+39
-42
lines changed

datadog_lambda/trace_wrapper.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ def start_span(self, name, **kwargs):
2222
if not tracer:
2323
return None
2424

25-
return self._tracer.start_span(name, **kwargs)
25+
return tracer.start_span(name, **kwargs)
2626

2727
def _load_tracer(self):
2828
if not TraceWrapper.tracer_enabled():
@@ -50,8 +50,8 @@ def trace_context(self):
5050
parent_id = span.context.span_id
5151
trace_id = span.context.trace_id
5252
return {
53-
"parent_id": parent_id,
54-
"trace_id": trace_id,
53+
"parent_id": str(parent_id),
54+
"trace_id": str(trace_id),
5555
"sampling_priority": SamplingPriority.AUTO_KEEP,
5656
"source": Source.DDTRACE,
5757
}

datadog_lambda/tracing.py

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -62,9 +62,9 @@ def _get_xray_trace_context():
6262

6363
def _context_obj_to_headers(obj):
6464
return {
65-
TraceHeader.TRACE_ID: obj.get("trace_id"),
66-
TraceHeader.PARENT_ID: obj.get("parent_id"),
67-
TraceHeader.SAMPLING_PRIORITY: obj.get("sampling_priority"),
65+
TraceHeader.TRACE_ID: str(obj.get("trace_id")),
66+
TraceHeader.PARENT_ID: str(obj.get("parent_id")),
67+
TraceHeader.SAMPLING_PRIORITY: str(obj.get("sampling_priority")),
6868
}
6969

7070

@@ -122,23 +122,26 @@ def get_dd_trace_context():
122122
"""
123123
global dd_trace_context
124124

125-
if not dd_trace_context:
126-
return None
127-
trace_context = _context_obj_to_headers(dd_trace_context)
128-
datadog_context = trace_wrapper.trace_context
129-
if datadog_context:
130-
logger.debug("get_dd_trace_context using dd-trace context")
131-
return datadog_context
125+
native_trace_context = trace_wrapper.trace_context
126+
if native_trace_context:
127+
logger.info("get_dd_trace_context using dd-trace context")
128+
return _context_obj_to_headers(native_trace_context)
129+
132130
try:
131+
trace_headers = _context_obj_to_headers(dd_trace_context)
133132
xray_context = _get_xray_trace_context() # xray (sub)segment
134-
if xray_context:
135-
trace_context[TraceHeader.PARENT_ID] = xray_context["parent_id"]
133+
if xray_context and not trace_headers:
134+
return _context_obj_to_headers(xray_context)
135+
if xray_context and trace_headers:
136+
trace_headers[TraceHeader.PARENT_ID] = xray_context["parent-id"]
137+
return trace_headers
136138
except Exception as e:
137139
logger.debug(
138140
"get_dd_trace_context couldn't read from segment from x-ray, with error %s"
139141
% e
140142
)
141-
return trace_context
143+
144+
return {}
142145

143146

144147
def set_correlation_ids():

setup.py

Lines changed: 20 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -6,40 +6,34 @@
66

77
here = path.abspath(path.dirname(__file__))
88

9-
with open(path.join(here, 'README.md'), encoding='utf-8') as f:
9+
with open(path.join(here, "README.md"), encoding="utf-8") as f:
1010
long_description = f.read()
1111

1212
setup(
13-
name='datadog_lambda',
13+
name="datadog_lambda",
1414
version=__version__,
15-
description='The Datadog AWS Lambda Layer',
15+
description="The Datadog AWS Lambda Layer",
1616
long_description=long_description,
17-
long_description_content_type='text/markdown',
18-
url='https://github.com/DataDog/datadog-lambda-layer-python',
19-
author='Datadog, Inc.',
20-
author_email='dev@datadoghq.com',
17+
long_description_content_type="text/markdown",
18+
url="https://github.com/DataDog/datadog-lambda-layer-python",
19+
author="Datadog, Inc.",
20+
author_email="dev@datadoghq.com",
2121
classifiers=[
22-
'Programming Language :: Python :: 2.7',
23-
'Programming Language :: Python :: 3.6',
24-
'Programming Language :: Python :: 3.7',
25-
'Programming Language :: Python :: 3.8',
22+
"Programming Language :: Python :: 2.7",
23+
"Programming Language :: Python :: 3.6",
24+
"Programming Language :: Python :: 3.7",
25+
"Programming Language :: Python :: 3.8",
2626
],
27-
keywords='datadog aws lambda layer',
28-
packages=['datadog_lambda'],
29-
python_requires='>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, <4',
27+
keywords="datadog aws lambda layer",
28+
packages=["datadog_lambda"],
29+
python_requires=">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, <4",
3030
install_requires=[
31-
'aws-xray-sdk==2.4.3',
32-
'datadog==0.32.0',
33-
'ddtrace==0.31.0',
34-
'wrapt==1.11.2',
35-
'setuptools==42.0.2',
31+
"aws-xray-sdk==2.4.3",
32+
"datadog==0.32.0",
33+
"wrapt==1.11.2",
34+
"setuptools==42.0.2",
3635
],
3736
extras_require={
38-
'dev': [
39-
'nose2==0.9.1',
40-
'flake8==3.7.9',
41-
'requests==2.22.0',
42-
'boto3==1.10.33',
43-
]
44-
}
37+
"dev": ["nose2==0.9.1", "flake8==3.7.9", "requests==2.22.0", "boto3==1.10.33"]
38+
},
4539
)

0 commit comments

Comments
 (0)