Merge "Emit stats for more build results"
This commit is contained in:
commit
d1ffc204e4
@ -0,0 +1,7 @@
|
||||
---
|
||||
features:
|
||||
- |
|
||||
Monitoring stats for builds are now emitted for more results.
|
||||
Previously they were emitted for some build results such as
|
||||
`SUCCESS`, `FAILURE`, and `ERROR` but now include `NODE_FAILURE`
|
||||
and other result values.
|
@ -5933,6 +5933,18 @@ For CI problems and help debugging, contact ci@example.org"""
|
||||
A.messages[1]))
|
||||
self.assertTrue(
|
||||
'Skipped due to failed job project-merge' in A.messages[1])
|
||||
self.assertReportedStat(
|
||||
'zuul.nodepool.requests.requested.total', value='1', kind='c')
|
||||
self.assertReportedStat(
|
||||
'zuul.nodepool.requests.requested.label.label1',
|
||||
value='1', kind='c')
|
||||
self.assertReportedStat(
|
||||
'zuul.nodepool.requests.failed.label.label1',
|
||||
value='1', kind='c')
|
||||
self.assertReportedStat(
|
||||
'zuul.tenant.tenant-one.pipeline.gate.project.review_example_com.'
|
||||
'org_project.master.job.project-merge.NODE_FAILURE', value='1',
|
||||
kind='c')
|
||||
|
||||
def test_nodepool_resources(self):
|
||||
"Test that resources are reported"
|
||||
|
@ -5472,7 +5472,7 @@ class QueueItem(zkobject.ZKObject):
|
||||
job=job, build_set=self.current_build_set,
|
||||
error_detail=str(e), result='FAILURE')
|
||||
self.addBuild(fakebuild)
|
||||
self.pipeline.manager.sql.reportBuildEnd(
|
||||
self.pipeline.manager.sched.reportBuildEnd(
|
||||
fakebuild,
|
||||
tenant=self.pipeline.tenant.name,
|
||||
final=True)
|
||||
@ -5881,7 +5881,7 @@ class QueueItem(zkobject.ZKObject):
|
||||
error_detail=skipped_reason,
|
||||
result='SKIPPED')
|
||||
self.addBuild(fakebuild)
|
||||
self.pipeline.manager.sql.reportBuildEnd(
|
||||
self.pipeline.manager.sched.reportBuildEnd(
|
||||
fakebuild,
|
||||
tenant=self.pipeline.tenant.name,
|
||||
final=True)
|
||||
@ -5897,7 +5897,7 @@ class QueueItem(zkobject.ZKObject):
|
||||
result='NODE_FAILURE',
|
||||
)
|
||||
self.addBuild(fakebuild)
|
||||
self.pipeline.manager.sql.reportBuildEnd(
|
||||
self.pipeline.manager.sched.reportBuildEnd(
|
||||
fakebuild,
|
||||
tenant=self.pipeline.tenant.name,
|
||||
final=True)
|
||||
@ -5958,7 +5958,7 @@ class QueueItem(zkobject.ZKObject):
|
||||
job=job, build_set=self.current_build_set,
|
||||
error_detail=msg, result='SKIPPED')
|
||||
self.addBuild(fakebuild)
|
||||
self.pipeline.manager.sql.reportBuildEnd(
|
||||
self.pipeline.manager.sched.reportBuildEnd(
|
||||
fakebuild,
|
||||
tenant=self.pipeline.tenant.name,
|
||||
final=True)
|
||||
@ -5972,7 +5972,7 @@ class QueueItem(zkobject.ZKObject):
|
||||
job=job, build_set=self.current_build_set,
|
||||
error_detail=msg, result='SKIPPED')
|
||||
self.addBuild(fakebuild)
|
||||
self.pipeline.manager.sql.reportBuildEnd(
|
||||
self.pipeline.manager.sched.reportBuildEnd(
|
||||
fakebuild,
|
||||
tenant=self.pipeline.tenant.name,
|
||||
final=True)
|
||||
|
@ -887,6 +887,10 @@ class Scheduler(threading.Thread):
|
||||
event, needs_result=False
|
||||
)
|
||||
|
||||
def reportBuildEnd(self, build, tenant, final):
|
||||
self.sql.reportBuildEnd(build, tenant=tenant, final=final)
|
||||
self._reportBuildStats(build)
|
||||
|
||||
def _reportBuildStats(self, build):
|
||||
# Note, as soon as the result is set, other threads may act
|
||||
# upon this, even though the event hasn't been fully
|
||||
@ -2904,6 +2908,9 @@ class Scheduler(threading.Thread):
|
||||
)
|
||||
|
||||
self._cleanupCompletedBuild(build)
|
||||
# This usually happens when we have already canceled a
|
||||
# build and reported stats for it, so don't send stats in
|
||||
# this case.
|
||||
try:
|
||||
self.sql.reportBuildEnd(
|
||||
build, tenant=pipeline.tenant.name,
|
||||
@ -2974,11 +2981,9 @@ class Scheduler(threading.Thread):
|
||||
}
|
||||
tracing.endSavedSpan(build.span_info, attributes=attributes)
|
||||
|
||||
self._reportBuildStats(build)
|
||||
|
||||
self._cleanupCompletedBuild(build)
|
||||
try:
|
||||
self.sql.reportBuildEnd(
|
||||
self.reportBuildEnd(
|
||||
build, tenant=pipeline.tenant.name, final=(not build.retry))
|
||||
except Exception:
|
||||
log.exception("Error reporting build completion to DB:")
|
||||
@ -3130,7 +3135,7 @@ class Scheduler(threading.Thread):
|
||||
# anymore once the pipeline is removed.
|
||||
self.executor.removeBuild(build)
|
||||
try:
|
||||
self.sql.reportBuildEnd(
|
||||
self.reportBuildEnd(
|
||||
build, build.build_set.item.pipeline.tenant.name,
|
||||
final=False)
|
||||
except Exception:
|
||||
|
Loading…
Reference in New Issue
Block a user