diff --git a/web/pgadmin/utils/driver/psycopg2/server_manager.py b/web/pgadmin/utils/driver/psycopg2/server_manager.py index 4b9dc19ed..57ddd6179 100644 --- a/web/pgadmin/utils/driver/psycopg2/server_manager.py +++ b/web/pgadmin/utils/driver/psycopg2/server_manager.py @@ -403,8 +403,14 @@ WHERE db.oid = {0}""".format(did)) else: return False - for con in self.connections: - self.connections[con]._release() + for con_key in list(self.connections.keys()): + conn = self.connections[con_key] + # Cancel the ongoing transaction before closing the connection + # as it may hang forever + if conn.connected() and conn.conn_id is not None and \ + conn.conn_id.startswith('CONN:'): + conn.cancel_transaction(conn.conn_id[5:]) + conn._release() self.connections = dict() self.ver = None