extras-buildsys/server BuildMaster.py, 1.38, 1.39 DBManager.py, 1.6, 1.7 User.py, 1.9, 1.10 UserInterface.py, 1.61, 1.62
Daniel Williams (dcbw)
fedora-extras-commits at redhat.com
Fri Mar 24 19:13:50 UTC 2006
Author: dcbw
Update of /cvs/fedora/extras-buildsys/server
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv20028/server
Modified Files:
BuildMaster.py DBManager.py User.py UserInterface.py
Log Message:
2006-03-24 Dan Williams <dcbw at redhat.com>
* server/DBManager.py
- Close database connection on delete for PostgreSQL and MySQL. Fixes
leaking MySQL connection with Python 2.3 and MySQL-python 1.0.0,
as seen on RHEL4. #rh182441#
* server/BuildMaster.py
- Delete the database context when on stop
* server/User.py
* server/UserInterface.py
- Clean up deletion of database contexts and cursors
Index: BuildMaster.py
===================================================================
RCS file: /cvs/fedora/extras-buildsys/server/BuildMaster.py,v
retrieving revision 1.38
retrieving revision 1.39
diff -u -r1.38 -r1.39
--- BuildMaster.py 12 Mar 2006 13:43:40 -0000 1.38
+++ BuildMaster.py 24 Mar 2006 19:13:41 -0000 1.39
@@ -72,6 +72,9 @@
threading.Thread.__init__(self)
self.setName("BuildMaster")
+ def _cleanup(self):
+ del self._cursor, self._dbcx
+
def _requeue_interrupted_jobs(self):
""" Restart interrupted jobs from our db. """
self._cursor.execute("SELECT uid FROM jobs WHERE (status!='needsign' AND status!='failed' AND status!='finished') ORDER BY uid")
@@ -416,3 +419,5 @@
while not self._have_work() and time.time() <= last_time + 5:
time.sleep(0.25)
+ self._cleanup()
+
Index: DBManager.py
===================================================================
RCS file: /cvs/fedora/extras-buildsys/server/DBManager.py,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- DBManager.py 12 Mar 2006 13:43:40 -0000 1.6
+++ DBManager.py 24 Mar 2006 19:13:41 -0000 1.7
@@ -211,6 +211,10 @@
return dbcx
+ def __del__(self):
+ self._dbcx.close()
+ del self._dbcx
+
class mysqlEngineClass(BaseDBEngineClass):
@@ -263,6 +267,10 @@
return dbcx
+ def __del__(self):
+ self._dbcx.close()
+ del self._dbcx
+
db_engines = {
'sqlite': sqliteEngineClass,
Index: User.py
===================================================================
RCS file: /cvs/fedora/extras-buildsys/server/User.py,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- User.py 25 Nov 2005 22:45:56 -0000 1.9
+++ User.py 24 Mar 2006 19:13:41 -0000 1.10
@@ -46,8 +46,7 @@
dbcx = self._db_manager.dbcx()
curs = dbcx.cursor()
except StandardError, e:
- del curs
- del dbcx
+ del curs, dbcx
print "Unable to access user database: '%s'" % str(e)
return None
user = None
@@ -62,7 +61,6 @@
else:
if self._cfg.get_bool("UI", "guest_allowed"):
user = User('guest at guest', True)
- del curs
- del dbcx
+ del curs, dbcx
return user
Index: UserInterface.py
===================================================================
RCS file: /cvs/fedora/extras-buildsys/server/UserInterface.py,v
retrieving revision 1.61
retrieving revision 1.62
diff -u -r1.61 -r1.62
--- UserInterface.py 12 Mar 2006 13:43:40 -0000 1.61
+++ UserInterface.py 24 Mar 2006 19:13:41 -0000 1.62
@@ -181,6 +181,7 @@
dbcx = self._db_manager.dbcx()
curs = dbcx.cursor()
except StandardError, e:
+ del curs, dbcx
return (-1, "Unable to access job database: '%s'" % e)
curs.execute(sql)
job = dbcx.fetchone(curs)
@@ -193,9 +194,8 @@
self._bm.requeue_job(uid)
result = (0, "Success: Job %d has been requeued." % uid)
- del curs
- del dbcx
- return result
+ del curs, dbcx
+ return result
def _kill_job(self, email, job, jobid):
if not job:
@@ -315,6 +315,7 @@
dbcx = self._db_manager.dbcx()
curs = dbcx.cursor()
except StandardError, e:
+ del curs, dbcx
return (-1, "Unable to access job database: '%s'" % e, [])
curs.execute(sql)
data = dbcx.fetchall(curs)
@@ -363,8 +364,7 @@
if job['uid'] == ajrec['parent_uid']:
job['archjobs'].append(copy.deepcopy(ajrec))
- del curs
- del dbcx
+ del curs, dbcx
return (0, "Success.", jobs)
@@ -384,12 +384,12 @@
dbcx = self._db_manager.dbcx()
curs = dbcx.cursor()
except StandardError, e:
+ del curs, dbcx
return (-1, "Unable to access job database: '%s'" % e, {})
curs.execute(sql)
job = dbcx.fetchone(curs)
if not job:
- del curs
- del dbcx
+ del curs, dbcx
return (-1, "Error: Invalid job UID.", {})
jobrec = {}
jobrec['uid'] = job['uid']
@@ -436,8 +436,7 @@
ret_job = copy.deepcopy(jobrec)
- del curs
- del dbcx
+ del curs, dbcx
return (0, "Success.", ret_job)
@@ -473,6 +472,13 @@
return self._bm.is_paused()
def finish(self, uid_list):
+ try:
+ dbcx = self._db_manager.dbcx()
+ curs = dbcx.cursor()
+ except StandardError, e:
+ del curs, dbcx
+ return (-1, "Unable to access job database: '%s'" % e)
+
uids = ''
for uid in uid_list:
uid = validate_uid(uid)
@@ -486,16 +492,10 @@
if len(uids):
sql = "UPDATE jobs SET status='finished' WHERE %s" % uids
- try:
- dbcx = self._db_manager.dbcx()
- curs = dbcx.cursor()
- except StandardError, e:
- return (-1, "Unable to access job database: '%s'" % e)
curs.execute(sql)
dbcx.commit()
- del curs
- del dbcx
+ del curs, dbcx
return (0, "Success.")
def srpm_upload_dir(self, target_alias):
@@ -538,6 +538,7 @@
dbcx = self._db_manager.dbcx()
curs = dbcx.cursor()
except StandardError, e:
+ del curs, dbcx
return (-1, "Unable to access job database: '%s'" % e)
curs.execute(sql)
@@ -551,8 +552,7 @@
else:
result = UserInterface.requeue(self, uid)
- del curs
- del dbcx
+ del curs, dbcx
return result
def kill_job(self, email, jobid):
@@ -627,6 +627,7 @@
dbcx = self._db_manager.dbcx()
curs = dbcx.cursor()
except StandardError, e:
+ del curs, dbcx
return (-1, "Unable to access job database: '%s'" % e)
curs.execute(sql)
@@ -656,8 +657,7 @@
final_uid_list.append(uid)
- del curs
- del dbcx
+ del curs, dbcx
if error:
return error
More information about the fedora-extras-commits
mailing list