changeset 117:2f0f2f006526

Delete build steps when cleaning up pending builds.
author cmlenz
date Mon, 08 Aug 2005 08:32:26 +0000
parents 86439c2aa6d6
children 77dd69f7c405
files bitten/master.py bitten/model.py
diffstat 2 files changed, 12 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/bitten/master.py
+++ b/bitten/master.py
@@ -191,15 +191,20 @@
         for slaves in self.slaves.values():
             slaves.discard(handler)
 
+        db = self.env.get_db_cnx()
         for build in Build.select(self.env, slave=handler.name,
-                                  status=Build.IN_PROGRESS):
+                                  status=Build.IN_PROGRESS, db=db):
             log.info('Build [%s] of "%s" by %s cancelled', build.rev,
                      build.config, handler.name)
+            for step in BuildStep.select(self.env, build=build.id):
+                step.delete(db=db)
             build.slave = None
+            build.slave_info = {}
             build.status = Build.PENDING
             build.started = 0
-            build.update()
+            build.update(db=db)
             break
+        db.commit()
         log.info('Unregistered slave "%s"', handler.name)
 
 
--- a/bitten/model.py
+++ b/bitten/model.py
@@ -360,9 +360,10 @@
                        (self.slave or '', self.started or 0,
                         self.stopped or 0, self.status, self.id))
         cursor.execute("DELETE FROM bitten_slave WHERE build=%s", (self.id,))
-        cursor.executemany("INSERT INTO bitten_slave VALUES (%s,%s,%s)",
-                           [(self.id, name, value) for name, value
-                            in self.slave_info.items()])
+        if self.slave_info:
+            cursor.executemany("INSERT INTO bitten_slave VALUES (%s,%s,%s)",
+                               [(self.id, name, value) for name, value
+                                in self.slave_info.items()])
         if handle_ta:
             db.commit()
 
@@ -377,7 +378,7 @@
         if not row:
             return None
 
-        build = Build(env, id=id, config=row[0], rev=row[1],
+        build = Build(env, id=int(id), config=row[0], rev=row[1],
                       rev_time=int(row[2]), platform=int(row[3]),
                       slave=row[4], started=row[5] and int(row[5]) or 0,
                       stopped=row[6] and int(row[6]) or 0, status=row[7])
Copyright (C) 2012-2017 Edgewall Software