Hi Hackers,

In the patch attached, we are gracefully informing the end user, using an
alert message, that the database is already connected when they click
"Connect Database..." after right clicking on a disconnected database.

As this problem deals with racing conditions, it is highly complex to show
the "Disconnect database" option in the menu upon right click. So we are
alerting the end user with the information of "Database already connected".

Thanks,
Sathish V
diff --git a/web/pgadmin/browser/server_groups/servers/databases/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/__init__.py
index 9216f21..a931371 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/__init__.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/__init__.py
@@ -456,6 +456,7 @@ class DatabaseView(PGChildNodeView):
         from pgadmin.utils.driver import get_driver
         manager = get_driver(PG_DEFAULT_DRIVER).connection_manager(sid)
         conn = manager.connection(did=did, auto_reconnect=True)
+        info_already_connected = conn.connected()
         status, errmsg = conn.connect()
 
         if not status:
@@ -469,13 +470,14 @@ class DatabaseView(PGChildNodeView):
         else:
             current_app.logger.info('Connection Established for Database Id: \
                 %s' % (did))
-
             return make_json_response(
                 success=1,
-                info=_("Database connected."),
+                info=_("Database already connected") if info_already_connected
+                else _("Database connected"),
                 data={
                     'icon': 'pg-icon-database',
                     'connected': True,
+                    'info_already_connected': info_already_connected,
                     'info_prefix': '{0}/{1}'.
                     format(Server.query.filter_by(id=sid)[0].name, conn.db)
                 }
diff --git a/web/pgadmin/browser/server_groups/servers/databases/static/js/database.js b/web/pgadmin/browser/server_groups/servers/databases/static/js/database.js
index f458d69..24e7205 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/static/js/database.js
+++ b/web/pgadmin/browser/server_groups/servers/databases/static/js/database.js
@@ -534,7 +534,13 @@ define('pgadmin.node.database', [
                 res.info = `${_.escape(res.data.info_prefix)} - ${res.info}`;
               }
 
-              Alertify.success(res.info);
+              if(res.data.info_already_connected){
+                Alertify.error(res.info);
+              } else {
+                Alertify.success(res.info);
+              }
+
+
               obj.trigger('connected', obj, item, data);
               pgBrowser.Events.trigger(
                 'pgadmin:database:connected', item, data

Reply via email to