diff --git a/openerp/service/web_services.py b/openerp/service/web_services.py index a7136e24269..8fed25cf226 100644 --- a/openerp/service/web_services.py +++ b/openerp/service/web_services.py @@ -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: