As per the RM, the fix is supposed to be at the front-end but it seems difficult at the moment as on the selection of the database, we connect it and at the same time the context menu is being called.
As you have tried to fix at the backend, some of the review comments are below.
1. If the database is already connected, no need to call conn.connect again.
info_already_connected = conn.connected()
status, errmsg = conn.connect()
2. If you want to raise an error at the client side, use the appropriate function or status (check file ajax.py) at the server side and send the appropriate response.
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".