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)

Reply via email to