diff options
author | James E. Blair <jim@acmegating.com> | 2022-10-05 11:16:18 -0700 |
---|---|---|
committer | James E. Blair <jim@acmegating.com> | 2022-10-05 11:16:18 -0700 |
commit | e68f2bfdb3dc43540febb0874bab0bc559c5ec95 (patch) | |
tree | 42796ccc760029e69900075c072635c60cc5ec77 /zuul | |
parent | 6f506fb8d0095475e7aa1e8c348b5a04bf605aef (diff) | |
download | zuul-e68f2bfdb3dc43540febb0874bab0bc559c5ec95.tar.gz |
Don't trace merge jobs that we don't lock
We get a trace from every merger (including executors) for every
merge job because we start the trace before attempting the lock.
So essentially, we get one trace from the merger that runs the job,
and one trace from every other merger indicating that it did not
run the job.
This is perhaps too much detail for us. While it's true that we
can see the response times of every system component here, it may
be sufficient to have only the response time of the first merger.
This will reduce the noise in trace visualizations significantly.
Change-Id: I88c56f00c060eae9316473f4a4e222a0db97e510
Diffstat (limited to 'zuul')
-rw-r--r-- | zuul/merger/server.py | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/zuul/merger/server.py b/zuul/merger/server.py index fec3df5e0..d99e5d3ee 100644 --- a/zuul/merger/server.py +++ b/zuul/merger/server.py @@ -208,22 +208,25 @@ class BaseMergeServer(metaclass=ABCMeta): if not self._merger_running: break - with tracing.startSpanInContext( - merge_request.span_context, "MergerJob", - attributes={"merger": self.hostname}): - self._runMergeJob(merge_request) + self._lockAndRunMergeJob(merge_request) except Exception: self.log.exception("Error in merge thread:") time.sleep(5) self.merger_loop_wake_event.set() + def _lockAndRunMergeJob(self, merge_request): + # Lock and update the merge request + if not self.merger_api.lock(merge_request, blocking=False): + return + with tracing.startSpanInContext( + merge_request.span_context, "MergerJob", + attributes={"merger": self.hostname}): + self._runMergeJob(merge_request) + def _runMergeJob(self, merge_request): log = get_annotated_logger( self.log, merge_request.event_id ) - # Lock and update the merge request - if not self.merger_api.lock(merge_request, blocking=False): - return # Ensure that the request is still in state requested. This method is # called based on cached data and there might be a mismatch between the |