The branch, master has been updated via 2ec5988 Cope with missing revision info in logs. from 926046e Fix override of status method.
http://gitweb.samba.org/?p=build-farm.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit 2ec59886e606ae73e0c9305450a9e1c148b7b41e Author: Jelmer Vernooij <jel...@samba.org> Date: Sat Nov 13 18:30:56 2010 +0100 Cope with missing revision info in logs. ----------------------------------------------------------------------- Summary of changes: buildfarm/data.py | 13 ++++++++++--- buildfarm/sqldb.py | 2 +- import-and-analyse.py | 12 ++++++++++-- 3 files changed, 21 insertions(+), 6 deletions(-) Changeset truncated at 500 lines: diff --git a/buildfarm/data.py b/buildfarm/data.py index 10966f4..5c25aab 100644 --- a/buildfarm/data.py +++ b/buildfarm/data.py @@ -42,6 +42,13 @@ class BuildSummary(object): BuildStageResult = collections.namedtuple("BuildStageResult", "name result") +class MissingRevisionInfo(Exception): + """Revision info could not be found in the build log.""" + + def __init__(self, build): + self.build = build + + class BuildStatus(object): def __init__(self, stages=None, other_failures=None): @@ -259,6 +266,9 @@ class Build(object): finally: f.close() + if revid is None: + raise MissingRevisionInfo(self) + return (revid, timestamp) def status(self): @@ -375,9 +385,6 @@ class BuildResultStore(object): def upload_build(self, build): (rev, rev_timestamp) = build.revision_details() - if not rev: - raise Exception("Unable to find revision in %r log" % build) - new_basename = self.build_fname(build.tree, build.host, build.compiler, rev) try: existing_build = self.get_build(build.tree, build.host, build.compiler, rev) diff --git a/buildfarm/sqldb.py b/buildfarm/sqldb.py index 2f65931..709784f 100644 --- a/buildfarm/sqldb.py +++ b/buildfarm/sqldb.py @@ -192,7 +192,7 @@ class StormCachingBuildResultStore(BuildResultStore): new_build = StormBuild(new_basename, unicode(build.tree), unicode(build.host), unicode(build.compiler), rev) new_build.checksum = build.log_checksum() new_build.age = build.age_mtime() - new_build.status = unicode(str(build.status())) + new_build.status_str = unicode(str(build.status())) self.store.add(new_build) return new_build diff --git a/import-and-analyse.py b/import-and-analyse.py index dcfcec6..773a03f 100755 --- a/import-and-analyse.py +++ b/import-and-analyse.py @@ -90,9 +90,17 @@ for build in buildfarm.get_new_builds(): continue if not opts.dry_run: - build = buildfarm.builds.upload_build(build) + try: + build = buildfarm.builds.upload_build(build) + except data.MissingRevisionInfo: + print "No revision info in %r, skipping" % build + continue - (rev, rev_timestamp) = build.revision_details() + try: + (rev, rev_timestamp) = build.revision_details() + except data.MissingRevisionInfo: + print "No revision info in %r, skipping" % build + continue if opts.verbose >= 2: print str(build.status()) -- build.samba.org