summaryrefslogtreecommitdiff
path: root/zuul/manager/__init__.py
diff options
context:
space:
mode:
Diffstat (limited to 'zuul/manager/__init__.py')
-rw-r--r--zuul/manager/__init__.py25
1 files changed, 23 insertions, 2 deletions
diff --git a/zuul/manager/__init__.py b/zuul/manager/__init__.py
index 365435f3d..cd9b2381d 100644
--- a/zuul/manager/__init__.py
+++ b/zuul/manager/__init__.py
@@ -22,6 +22,7 @@ from zuul import model
from zuul.lib.dependson import find_dependency_headers
from zuul.lib.logutil import get_annotated_logger
from zuul.lib.tarjan import strongly_connected_components
+import zuul.lib.tracing as tracing
from zuul.model import (
Change, DequeueEvent, PipelineState, PipelineChangeList, QueueItem,
PipelinePostConfigEvent,
@@ -30,6 +31,8 @@ from zuul.zk.change_cache import ChangeKey
from zuul.zk.components import COMPONENT_REGISTRY
from zuul.zk.locks import pipeline_lock
+from opentelemetry import trace
+
class DynamicChangeQueueContextManager(object):
def __init__(self, change_queue):
@@ -579,7 +582,13 @@ class PipelineManager(metaclass=ABCMeta):
log.info("Adding change %s to queue %s in %s" %
(change, change_queue, self.pipeline))
- item = change_queue.enqueueChange(change, event)
+ if enqueue_time is None:
+ enqueue_time = time.time()
+ span_info = tracing.startSavedSpan(
+ 'QueueItem', start_time=enqueue_time)
+ item = change_queue.enqueueChange(change, event,
+ span_info=span_info,
+ enqueue_time=enqueue_time)
self.updateBundle(item, change_queue, cycle)
with item.activeContext(self.current_context):
@@ -739,6 +748,15 @@ class PipelineManager(metaclass=ABCMeta):
self.reportDequeue(item)
item.queue.dequeueItem(item)
+ span_attrs = {
+ 'zuul_event_id': item.event.zuul_event_id,
+ }
+ for k, v in item.change.getSafeAttributes().toDict().items():
+ span_attrs['ref_' + k] = v
+ tracing.endSavedSpan(item.current_build_set.span_info)
+ tracing.endSavedSpan(item.span_info,
+ attributes=span_attrs)
+
def removeItem(self, item):
log = get_annotated_logger(self.log, item.event)
# Remove an item from the queue, probably because it has been
@@ -964,6 +982,7 @@ class PipelineManager(metaclass=ABCMeta):
self.reportNormalBuildsetEnd(
item.current_build_set, 'dequeue', final=False,
result='DEQUEUED')
+ tracing.endSavedSpan(item.current_build_set.span_info)
item.resetAllBuilds()
for item_behind in item.items_behind:
@@ -1337,7 +1356,9 @@ class PipelineManager(metaclass=ABCMeta):
# isn't already set.
tpc = tenant.project_configs.get(item.change.project.canonical_name)
if not build_set.ref:
- build_set.setConfiguration(self.current_context)
+ with trace.use_span(tracing.restoreSpan(item.span_info)):
+ span_info = tracing.startSavedSpan('BuildSet')
+ build_set.setConfiguration(self.current_context, span_info)
# Next, if a change ahead has a broken config, then so does
# this one. Record that and don't do anything else.