[IMP] try to terminate all postgresql backends connected to a database before dropping it

bzr revid: chs@openerp.com-20120222102639-q19kiykopb3b3qu0
This commit is contained in:
Christophe Simonis 2012-02-22 11:26:39 +01:00
parent b5db852b3a
commit 3df9fa50fb
1 changed files with 9 additions and 0 deletions

View File

@ -173,6 +173,8 @@ class db(netsvc.ExportService):
raise Exception, e
def exp_drop(self, db_name):
if not self.exp_db_exist(db_name):
return False
openerp.modules.registry.RegistryManager.delete(db_name)
sql_db.close_db(db_name)
@ -180,6 +182,13 @@ class db(netsvc.ExportService):
cr = db.cursor()
cr.autocommit(True) # avoid transaction block
try:
try:
cr.execute('SELECT DISTINCT procpid FROM pg_stat_activity WHERE datname=%s', (db_name,))
for procpid, in cr.fetchall():
cr.execute('SELECT pg_terminate_backend(%d)' % (procpid,))
except Exception:
pass
try:
cr.execute('DROP DATABASE "%s"' % db_name)
except Exception, e: