Annotate job freezing logs with event id

When tracing an event through the system it's useful to have the job
freezing process annotated with the event that caused the action.

Change-Id: Iac64b437070da0f4ec570c9892c4447af0b7abf5
This commit is contained in:
Tobias Henkel 2019-05-13 19:58:14 +02:00
parent 7639053905
commit e161ffb3bc
No known key found for this signature in database
GPG Key ID: 03750DEC158E5FA2
2 changed files with 24 additions and 22 deletions

View File

@ -14,8 +14,6 @@
import logging
from zuul.model import TriggerEvent
def get_annotated_logger(logger, event, build=None):
# Note(tobiash): When running with python 3.5 log adapters cannot be
@ -26,7 +24,7 @@ def get_annotated_logger(logger, event, build=None):
extra = {}
if event is not None:
if isinstance(event, TriggerEvent):
if hasattr(event, 'zuul_event_id'):
extra['event_id'] = event.zuul_event_id
else:
extra['event_id'] = event

View File

@ -30,6 +30,7 @@ import itertools
from zuul import change_matcher
from zuul.lib.config import get_default
from zuul.lib.artifacts import get_artifacts_from_result_data
from zuul.lib.logutil import get_annotated_logger
MERGER_MERGE = 1 # "git merge"
MERGER_MERGE_RESOLVE = 2 # "git merge -s resolve"
@ -3704,6 +3705,7 @@ class Layout(object):
return None
def getProjectPipelineConfig(self, item):
log = get_annotated_logger(self.log, item.event)
# Create a project-pipeline config for the given item, taking
# its branch (if any) into consideration. If the project does
# not participate in the pipeline at all (in this branch),
@ -3719,11 +3721,11 @@ class Layout(object):
if not pc.changeMatches(item.change):
msg = "Project %s did not match" % (pc,)
ppc.addDebug(msg)
self.log.debug("%s item %s" % (msg, item))
log.debug("%s item %s", msg, item)
continue
msg = "Project %s matched" % (pc,)
ppc.addDebug(msg)
self.log.debug("%s item %s" % (msg, item))
log.debug("%s item %s", msg, item)
for template_name in pc.templates:
templates = self.getProjectTemplates(template_name)
for template in templates:
@ -3733,12 +3735,12 @@ class Layout(object):
msg = "Project template %s did not match" % (
template,)
ppc.addDebug(msg)
self.log.debug("%s item %s" % (msg, item))
log.debug("%s item %s", msg, item)
continue
msg = "Project template %s matched" % (
template,)
ppc.addDebug(msg)
self.log.debug("%s item %s" % (msg, item))
log.debug("%s item %s", msg, item)
project_in_pipeline = True
ppc.update(template_ppc)
ppc.updateVariables(template.variables)
@ -3767,6 +3769,7 @@ class Layout(object):
def _collectJobVariants(self, item, jobname, change, path, jobs, stack,
override_checkouts, indent):
log = get_annotated_logger(self.log, item.event)
matched = False
local_override_checkouts = override_checkouts.copy()
override_branch = None
@ -3784,13 +3787,12 @@ class Layout(object):
if not variant.changeMatchesBranch(
change,
override_branch=override_branch):
self.log.debug("Variant %s did not match %s", repr(variant),
change)
log.debug("Variant %s did not match %s", repr(variant), change)
item.debug("Variant {variant} did not match".format(
variant=repr(variant)), indent=indent)
continue
else:
self.log.debug("Variant %s matched %s", repr(variant), change)
log.debug("Variant %s matched %s", repr(variant), change)
item.debug("Variant {variant} matched".format(
variant=repr(variant)), indent=indent)
if not variant.isBase():
@ -3812,6 +3814,7 @@ class Layout(object):
def collectJobs(self, item, jobname, change, path=None, jobs=None,
stack=None, override_checkouts=None):
log = get_annotated_logger(self.log, item.event)
# Stack is the recursion stack of job parent names. Each time
# we go up a level, we add to stack, and it's popped as we
# descend.
@ -3837,20 +3840,21 @@ class Layout(object):
matched = False
indent = len(path) + 1
msg = "Collecting job variants for {jobname}".format(jobname=jobname)
self.log.debug(msg)
log.debug(msg)
item.debug(msg, indent=indent)
matched = self._collectJobVariants(
item, jobname, change, path, jobs, stack, override_checkouts,
indent)
if not matched:
self.log.debug("No matching parents for job %s and change %s",
jobname, change)
log.debug("No matching parents for job %s and change %s",
jobname, change)
item.debug("No matching parents for {jobname}".format(
jobname=repr(jobname)), indent=indent)
raise NoMatchingParentError()
return jobs
def _createJobGraph(self, item, ppc, job_graph, skip_file_matcher):
log = get_annotated_logger(self.log, item.event)
job_list = ppc.job_list
change = item.change
pipeline = item.pipeline
@ -3858,7 +3862,7 @@ class Layout(object):
for jobname in job_list.jobs:
# This is the final job we are constructing
frozen_job = None
self.log.debug("Collecting jobs %s for %s", jobname, change)
log.debug("Collecting jobs %s for %s", jobname, change)
item.debug("Freezing job {jobname}".format(
jobname=jobname), indent=1)
# Create the initial list of override_checkouts, which are
@ -3874,7 +3878,7 @@ class Layout(object):
override_checkouts=override_checkouts)
except NoMatchingParentError:
variants = None
self.log.debug("Collected jobs %s for %s", jobname, change)
log.debug("Collected jobs %s for %s", jobname, change)
if not variants:
# A change must match at least one defined job variant
# (that is to say that it must match more than just
@ -3890,7 +3894,7 @@ class Layout(object):
frozen_job.applyVariant(variant, item.layout)
frozen_job.name = variant.name
frozen_job.name = jobname
self.log.debug("Froze job %s for %s", jobname, change)
log.debug("Froze job %s for %s", jobname, change)
# Whether the change matches any of the project pipeline
# variants
matched = False
@ -3898,13 +3902,13 @@ class Layout(object):
if variant.changeMatchesBranch(change):
frozen_job.applyVariant(variant, item.layout)
matched = True
self.log.debug("Pipeline variant %s matched %s",
repr(variant), change)
log.debug("Pipeline variant %s matched %s",
repr(variant), change)
item.debug("Pipeline variant {variant} matched".format(
variant=repr(variant)), indent=2)
else:
self.log.debug("Pipeline variant %s did not match %s",
repr(variant), change)
log.debug("Pipeline variant %s did not match %s",
repr(variant), change)
item.debug("Pipeline variant {variant} did not match".
format(variant=repr(variant)), indent=2)
if not matched:
@ -3915,8 +3919,8 @@ class Layout(object):
continue
if not skip_file_matcher and \
not frozen_job.changeMatchesFiles(change):
self.log.debug("Job %s did not match files in %s",
repr(frozen_job), change)
log.debug("Job %s did not match files in %s",
repr(frozen_job), change)
item.debug("Job {jobname} did not match files".
format(jobname=jobname), indent=2)
continue