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

Reply via email to