summaryrefslogtreecommitdiff
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
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
-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