[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
|
raise Exception, e
|
||||||
|
|
||||||
def exp_drop(self, db_name):
|
def exp_drop(self, db_name):
|
||||||
|
if not self.exp_db_exist(db_name):
|
||||||
|
return False
|
||||||
openerp.modules.registry.RegistryManager.delete(db_name)
|
openerp.modules.registry.RegistryManager.delete(db_name)
|
||||||
sql_db.close_db(db_name)
|
sql_db.close_db(db_name)
|
||||||
|
|
||||||
|
@ -180,6 +182,13 @@ class db(netsvc.ExportService):
|
||||||
cr = db.cursor()
|
cr = db.cursor()
|
||||||
cr.autocommit(True) # avoid transaction block
|
cr.autocommit(True) # avoid transaction block
|
||||||
try:
|
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:
|
try:
|
||||||
cr.execute('DROP DATABASE "%s"' % db_name)
|
cr.execute('DROP DATABASE "%s"' % db_name)
|
||||||
except Exception, e:
|
except Exception, e:
|
||||||
|
|
Loading…
Reference in New Issue