Hi, Please find patch to clear user connections on logout.
-- *Harshal Dhumal* *Sr. Software Engineer* EnterpriseDB India: http://www.enterprisedb.com The Enterprise PostgreSQL Company
diff --git a/web/pgadmin/__init__.py b/web/pgadmin/__init__.py index 9b2cf35..36dfee3 100644 --- a/web/pgadmin/__init__.py +++ b/web/pgadmin/__init__.py @@ -550,6 +550,13 @@ def create_app(app_name=None): def force_session_write(app, user): session.force_write = True + @user_logged_out.connect_via(app) + def clear_current_user_connections(app, user): + from config import PG_DEFAULT_DRIVER + from pgadmin.utils.driver import get_driver + _driver = get_driver(PG_DEFAULT_DRIVER) + _driver.gc_own() + ########################################################################## # Load plugin modules ########################################################################## diff --git a/web/pgadmin/utils/driver/psycopg2/__init__.py b/web/pgadmin/utils/driver/psycopg2/__init__.py index 5fefdee..f9dfd17 100644 --- a/web/pgadmin/utils/driver/psycopg2/__init__.py +++ b/web/pgadmin/utils/driver/psycopg2/__init__.py @@ -207,6 +207,22 @@ class Driver(BaseDriver): ]: mgr.release() + def gc_own(self): + """ + Release the connections for current session + This is useful when (eg. logout) we want to release all + connections (except dedicated connections created by utilities + like backup, restore etc) of all servers for current user. + """ + + sess_mgr = self.managers.get(session.sid, None) + + if sess_mgr: + for mgr in ( + m for m in sess_mgr.values() if isinstance(m, ServerManager) + ): + mgr.release() + @staticmethod def qtLiteral(value): adapted = adapt(value)