# HG changeset patch # User cmlenz # Date 1123489946 0 # Node ID 2f0f2f0065269a315187c1bf32718063ebd2ae70 # Parent 86439c2aa6d6f42cf7efc947b10c9745257acbaf Delete build steps when cleaning up pending builds. diff --git a/bitten/master.py b/bitten/master.py --- 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) diff --git a/bitten/model.py b/bitten/model.py --- 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])