summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZuul <zuul@review.opendev.org>2022-10-07 07:56:43 +0000
committerGerrit Code Review <review@openstack.org>2022-10-07 07:56:43 +0000
commit3023f5c707664972921a28b0ab9089fe0caba7a0 (patch)
tree48bb4eb1b9dbc4f6934bcef507a0e96a976b2d9a
parent5fef50ba355dcdee858acc60533793f61688e11f (diff)
parentbbe89422e794afa48f1c9bca117cda072ea0f0f1 (diff)
downloadzuul-3023f5c707664972921a28b0ab9089fe0caba7a0.tar.gz
Merge "Store parent span context with span info"
-rw-r--r--tests/unit/test_tracing.py14
-rw-r--r--zuul/lib/tracing.py16
2 files changed, 26 insertions, 4 deletions
diff --git a/tests/unit/test_tracing.py b/tests/unit/test_tracing.py
index 00ef85e36..ff20f84f1 100644
--- a/tests/unit/test_tracing.py
+++ b/tests/unit/test_tracing.py
@@ -195,11 +195,11 @@ class TestTracing(ZuulTestCase):
self.log.debug("Received:\n%s", merge_job)
build = self.getSpan('Build')
self.log.debug("Received:\n%s", build)
- job = self.getSpan('JobExecution')
- self.log.debug("Received:\n%s", job)
+ jobexec = self.getSpan('JobExecution')
+ self.log.debug("Received:\n%s", jobexec)
self.assertEqual(item.trace_id, buildset.trace_id)
self.assertEqual(item.trace_id, build.trace_id)
- self.assertNotEqual(item.span_id, job.span_id)
+ self.assertNotEqual(item.span_id, jobexec.span_id)
self.assertTrue(buildset.start_time_unix_nano >=
item.start_time_unix_nano)
self.assertTrue(buildset.end_time_unix_nano <=
@@ -208,6 +208,14 @@ class TestTracing(ZuulTestCase):
buildset.start_time_unix_nano)
self.assertTrue(merge_job.end_time_unix_nano <=
buildset.end_time_unix_nano)
+ self.assertEqual(jobexec.parent_span_id,
+ build.span_id)
+ self.assertEqual(build.parent_span_id,
+ buildset.span_id)
+ self.assertEqual(merge_job.parent_span_id,
+ buildset.span_id)
+ self.assertEqual(buildset.parent_span_id,
+ item.span_id)
item_attrs = attributes_to_dict(item.attributes)
self.assertTrue(item_attrs['ref_number'] == "1")
self.assertTrue(item_attrs['ref_patchset'] == "1")
diff --git a/zuul/lib/tracing.py b/zuul/lib/tracing.py
index 94a78c5ad..ebe966ad3 100644
--- a/zuul/lib/tracing.py
+++ b/zuul/lib/tracing.py
@@ -67,12 +67,19 @@ def getSpanInfo(span, include_attributes=False):
for l in span.links]
attrs = _formatAttributes(span.attributes)
context = span.get_span_context()
+ parent_context = None
+ if span.parent:
+ parent_context = {
+ **_formatContext(span.parent),
+ "is_remote": span.parent.is_remote,
+ }
ret = {
'name': span.name,
'trace_id': context.trace_id,
'span_id': context.span_id,
'trace_flags': context.trace_flags,
'start_time': span.start_time,
+ 'parent': parent_context,
}
if links:
ret['links'] = links
@@ -119,11 +126,18 @@ def restoreSpan(span_info, is_remote=True):
link = trace.Link(link_context, link_info['attributes'])
links.append(link)
attributes = span_info.get('attributes', {})
+ parent_context = None
+ if parent_info := span_info.get("parent"):
+ parent_context = trace.SpanContext(
+ parent_info['trace_id'],
+ parent_info['span_id'],
+ is_remote=parent_info['is_remote'],
+ )
span = ZuulSpan(
name=span_info['name'],
context=span_context,
- parent=None,
+ parent=parent_context,
sampler=tracer.sampler,
resource=tracer.resource,
attributes=attributes,