diff --git a/trytond/backend/postgresql/database.py b/trytond/backend/postgresql/database.py index 8f755c1eec..d7fd615b01 100644 --- a/trytond/backend/postgresql/database.py +++ b/trytond/backend/postgresql/database.py @@ -140,8 +140,10 @@ class Database(DatabaseInterface): cursor = database.cursor() if not cursor.test(): cursor.close() + database.close() raise Exception('Couldn\'t restore database!') cursor.close() + database.close() return True @staticmethod diff --git a/trytond/protocols/dispatcher.py b/trytond/protocols/dispatcher.py index 1b8364b4fe..ea2d1c0900 100644 --- a/trytond/protocols/dispatcher.py +++ b/trytond/protocols/dispatcher.py @@ -237,8 +237,12 @@ def drop(database_name, password): return True def dump(database_name, password): - logger = logging.getLogger('database') security.check_super(password) + Database(database_name).close() + # Sleep to let connections close + time.sleep(1) + logger = logging.getLogger('database') + data = Database.dump(database_name) logger.info('DUMP DB: %s' % (database_name)) return base64.encodestring(data)