End node request span when result event is sent

The node request span needs to be ended whenever we add a result event
to the pipeline. Before we only did that when iterating over the node
requests after we've won the nodepool election.

Change-Id: I0276d5498b243522540657352a733d663ae71918
This commit is contained in:
Simon Westphahl 2022-10-07 14:20:10 +02:00
parent 30c725ff6e
commit d864d83ade
No known key found for this signature in database
2 changed files with 9 additions and 4 deletions

View File

@ -193,11 +193,14 @@ class TestTracing(ZuulTestCase):
self.log.debug("Received:\n%s", item)
merge_job = self.getSpan('Merge')
self.log.debug("Received:\n%s", merge_job)
node_request = self.getSpan('RequestNodes')
self.log.debug("Received:\n%s", node_request)
build = self.getSpan('Build')
self.log.debug("Received:\n%s", build)
jobexec = self.getSpan('JobExecution')
self.log.debug("Received:\n%s", jobexec)
self.assertEqual(item.trace_id, buildset.trace_id)
self.assertEqual(item.trace_id, node_request.trace_id)
self.assertEqual(item.trace_id, build.trace_id)
self.assertNotEqual(item.span_id, jobexec.span_id)
self.assertTrue(buildset.start_time_unix_nano >=
@ -210,6 +213,8 @@ class TestTracing(ZuulTestCase):
buildset.end_time_unix_nano)
self.assertEqual(jobexec.parent_span_id,
build.span_id)
self.assertEqual(node_request.parent_span_id,
buildset.span_id)
self.assertEqual(build.parent_span_id,
buildset.span_id)
self.assertEqual(merge_job.parent_span_id,

View File

@ -84,6 +84,10 @@ class Nodepool(object):
del self.election
def _sendNodesProvisionedEvent(self, request):
tracing.endSavedSpan(request.span_info, attributes={
"request_id": request.id,
"state": request.state,
})
tenant_name = request.tenant_name
pipeline_name = request.pipeline_name
event = model.NodesProvisionedEvent(request.id, request.build_set_uuid)
@ -101,10 +105,6 @@ class Nodepool(object):
continue
if (request.state in {model.STATE_FULFILLED,
model.STATE_FAILED}):
tracing.endSavedSpan(request.span_info, attributes={
"request_id": request.id,
"state": request.state,
})
self._sendNodesProvisionedEvent(request)
# Now resume normal event processing.
self.stop_watcher_event.wait()