diff options
author | Zuul <zuul@review.opendev.org> | 2022-10-04 10:37:12 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2022-10-04 10:37:12 +0000 |
commit | b0e9046dd71cb8f68e284a73200be53505039359 (patch) | |
tree | 2dfb6376a48fcbf6fbccad3c372b7e56d5e2a7af | |
parent | 6865255bcbdc391dc4aae8a572c765a9545b44bd (diff) | |
parent | 3db58dbe33f09971c174cc04c0a1338e26b001d0 (diff) | |
download | zuul-b0e9046dd71cb8f68e284a73200be53505039359.tar.gz |
Merge "Trace Zuul trigger events"
-rw-r--r-- | zuul/driver/zuul/__init__.py | 43 | ||||
-rw-r--r-- | zuul/manager/__init__.py | 8 |
2 files changed, 35 insertions, 16 deletions
diff --git a/zuul/driver/zuul/__init__.py b/zuul/driver/zuul/__init__.py index 9a9c45da9..6dd6ff1b9 100644 --- a/zuul/driver/zuul/__init__.py +++ b/zuul/driver/zuul/__init__.py @@ -16,6 +16,8 @@ import logging import time from uuid import uuid4 +from opentelemetry import trace + from zuul.driver import Driver, TriggerInterface from zuul.driver.zuul.zuulmodel import ZuulTriggerEvent from zuul.driver.zuul import zuulmodel @@ -29,6 +31,7 @@ PROJECT_CHANGE_MERGED = 'project-change-merged' class ZuulDriver(Driver, TriggerInterface): name = 'zuul' log = logging.getLogger("zuul.ZuulTrigger") + tracer = trace.get_tracer("zuul") def __init__(self): self.parent_change_enqueued_events = {} @@ -54,12 +57,19 @@ class ZuulDriver(Driver, TriggerInterface): def onChangeMerged(self, tenant, change, source): # Called each time zuul merges a change if self.project_change_merged_events.get(tenant.name): - try: - self._createProjectChangeMergedEvents(change, source) - except Exception: - self.log.exception( - "Unable to create project-change-merged events for " - "%s" % (change,)) + span = trace.get_current_span() + link_attributes = {"rel": "ChangeMerged"} + link = trace.Link(span.get_span_context(), + attributes=link_attributes) + attributes = {"event_type": PROJECT_CHANGE_MERGED} + with self.tracer.start_as_current_span( + "ZuulEvent", links=[link], attributes=attributes): + try: + self._createProjectChangeMergedEvents(change, source) + except Exception: + self.log.exception( + "Unable to create project-change-merged events for " + "%s" % (change,)) def onChangeEnqueued(self, tenant, change, pipeline, event): log = get_annotated_logger(self.log, event) @@ -69,13 +79,20 @@ class ZuulDriver(Driver, TriggerInterface): (tenant.name, pipeline.name)) log.debug("onChangeEnqueued %s", tenant_events) if tenant_events: - try: - self._createParentChangeEnqueuedEvents( - change, pipeline, tenant, event) - except Exception: - log.exception( - "Unable to create parent-change-enqueued events for " - "%s in %s" % (change, pipeline)) + span = trace.get_current_span() + link_attributes = {"rel": "ChangeEnqueued"} + link = trace.Link(span.get_span_context(), + attributes=link_attributes) + attributes = {"event_type": PARENT_CHANGE_ENQUEUED} + with self.tracer.start_as_current_span( + "ZuulEvent", links=[link], attributes=attributes): + try: + self._createParentChangeEnqueuedEvents( + change, pipeline, tenant, event) + except Exception: + log.exception( + "Unable to create parent-change-enqueued events for " + "%s in %s" % (change, pipeline)) def _createProjectChangeMergedEvents(self, change, source): changes = source.getProjectOpenChanges( diff --git a/zuul/manager/__init__.py b/zuul/manager/__init__.py index aad112af8..d70b12885 100644 --- a/zuul/manager/__init__.py +++ b/zuul/manager/__init__.py @@ -623,8 +623,9 @@ class PipelineManager(metaclass=ABCMeta): zuul_driver = self.sched.connections.drivers['zuul'] tenant = self.pipeline.tenant - zuul_driver.onChangeEnqueued( - tenant, item.change, self.pipeline, event) + with trace.use_span(tracing.restoreSpan(item.span_info)): + zuul_driver.onChangeEnqueued( + tenant, item.change, self.pipeline, event) self.dequeueSupercededItems(item) return True @@ -2036,7 +2037,8 @@ class PipelineManager(metaclass=ABCMeta): zuul_driver = self.sched.connections.drivers['zuul'] tenant = self.pipeline.tenant - zuul_driver.onChangeMerged(tenant, item.change, source) + with trace.use_span(tracing.restoreSpan(item.span_info)): + zuul_driver.onChangeMerged(tenant, item.change, source) elif action: self.reportNormalBuildsetEnd(item.current_build_set, action, final=True) |