diff -Nur plague-0.4.4.1-orig/server/BuildMaster.py plague-0.4.4.1/server/BuildMaster.py --- plague-0.4.4.1-orig/server/BuildMaster.py 2005-11-29 07:16:52.000000000 +0100 +++ plague-0.4.4.1/server/BuildMaster.py 2008-01-03 19:49:49.000000000 +0100 @@ -65,6 +65,10 @@ self._building_jobs = {} self._building_jobs_lock = threading.Lock() + self._next_db_cleanup = time.time() + self._next_finish_check = time.time()+3600 + self._repodir = repodir + self._dbcx = self._db_manager.dbcx() self._cursor = self._dbcx.cursor() @@ -392,6 +399,28 @@ def is_paused(self): return self._paused + def _cleanup_db(self): + expiretime = int(time.time()-14*24*3600) + print "DB cleanup: %d" % expiretime + self._cursor.execute("DELETE FROM jobs WHERE (status='failed' OR status='finished') AND endtime<=%d" % expiretime) + self._dbcx.commit() + + def _finish_signed(self): # only for Fedora Extras pushscript + print "Checking needsign" + self._cursor.execute("SELECT * FROM jobs WHERE status='needsign'") + self._dbcx.commit() + rows = self._dbcx.fetchall(self._cursor) + for row in rows: + uid = row['uid'] + target = row['target_distro']+'-'+row['target_target']+'-'+row['target_repo'] + (n,v,r) = (row['package'],row['version'],row['release']) + pkgroot = os.path.join(self._repodir,target,n,'%s-%s'%(v,r)) + if not os.path.exists(pkgroot) or \ + os.path.exists(os.path.join(pkgroot,'PUSHED')): + print pkgroot, 'PUSHED => mark as finished' + self._cursor.execute("UPDATE jobs SET status='finished' WHERE uid=%d" % uid) + self._dbcx.commit() + def run(self): DebugUtils.registerThreadName(self) while self.should_stop == False: @@ -412,7 +441,15 @@ self._start_new_jobs() self._start_requeued_jobs() + if time.time() > self._next_db_cleanup: + self._next_db_cleanup = time.time()+24*3600; + self._cleanup_db() + # Only for Fedora Extras pushscript. + if time.time() > self._next_finish_check: + self._next_finish_check = time.time()+3600; + self._finish_signed() + last_time = time.time() while not self._have_work() and time.time() <= last_time + 5: time.sleep(0.25) diff -Nur plague-0.4.4.1-orig/server/UserInterface.py plague-0.4.4.1/server/UserInterface.py --- plague-0.4.4.1-orig/server/UserInterface.py 2005-11-28 18:46:21.000000000 +0100 +++ plague-0.4.4.1/server/UserInterface.py 2008-01-03 19:50:55.000000000 +0100 @@ -607,6 +607,7 @@ def finish(self, uid_list): + return (-1, "Feature disabled.") user = AuthedXMLRPCServer.get_authinfo() if not user or not user.own_jobs: return (-1, "Insufficient privileges.") diff -Nur plague-0.4.4.1-orig/www/success.psp plague-0.4.4.1/www/success.psp --- plague-0.4.4.1-patched/www/success.psp 2005-08-31 21:31:00.000000000 +0200 +++ plague-0.4.4.1/www/success.psp 2008-01-05 06:16:22.000000000 +0100 @@ -10,8 +10,8 @@ try: # show any jobs that have successfully built args = {} - args['status'] = ['add_to_repo', 'needsign', 'repowait', 'repodone'] - args['orderby'] = ['status', 'endtime desc'] + args['status'] = ['add_to_repo', 'finished', 'repowait', 'needsign', 'repodone'] + args['orderby'] = ['endtime desc'] args['maxrows'] = 100 (e, msg, jobs) = server.list_jobs(args) except socket.error, e: