summaryrefslogtreecommitdiff
path: root/zuul
diff options
context:
space:
mode:
authorJames E. Blair <jim@acmegating.com>2022-10-05 11:16:18 -0700
committerJames E. Blair <jim@acmegating.com>2022-10-05 11:16:18 -0700
commite68f2bfdb3dc43540febb0874bab0bc559c5ec95 (patch)
tree42796ccc760029e69900075c072635c60cc5ec77 /zuul
parent6f506fb8d0095475e7aa1e8c348b5a04bf605aef (diff)
downloadzuul-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.py17
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