[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:
parent
b5db852b3a
commit
3df9fa50fb
|
@ -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:
|
||||
|
|
Loading…
Reference in New Issue