Handle builds without gearman jobs

Zuul creates fake Build objects for jobs that it skips due to
merge conflicts and other such situations.  If Zuul decides to
cancel such a build, we should handle it gracefully instead of
throwing an exception.

Also log received gearman job handles to better correlate builds
with gearman debug logs.

Change-Id: I1cd14c8249ac4c68e797430b2b4941f2eeee2acf
This commit is contained in:
James E. Blair 2014-02-26 10:02:22 -08:00
parent f74f16000d
commit 9f1245869b
1 changed files with 9 additions and 0 deletions

View File

@ -321,12 +321,21 @@ class Gearman(object):
gearman_job)
self.onBuildCompleted(gearman_job, 'NO_HANDLE')
self.log.debug("Received handle %s for %s" % (gearman_job.handle,
build))
return build
def cancel(self, build):
self.log.info("Cancel build %s for job %s" % (build, build.job))
build.canceled = True
try:
job = build.__gearman_job # noqa
except AttributeError:
self.log.debug("Build %s has no associated gearman job" % build)
return
if build.number is not None:
self.log.debug("Build %s has already started" % build)
self.cancelRunningBuild(build)