public inbox for [email protected]
help / color / mirror / Atom feed[pgAdmin][RM5427]: pgAdmin is freezing
4+ messages / 2 participants
[nested] [flat]
* [pgAdmin][RM5427]: pgAdmin is freezing
@ 2021-10-27 04:40 Pradip Parkale <[email protected]>
2021-10-27 05:36 ` Re: [pgAdmin][RM5427]: pgAdmin is freezing Akshay Joshi <[email protected]>
0 siblings, 1 reply; 4+ messages in thread
From: Pradip Parkale @ 2021-10-27 04:40 UTC (permalink / raw)
To: pgadmin-hackers
Hi Hackers,
Please find the attached patch for #5427 pgAdmin is freezing.
--
Thanks & Regards,
Pradip Parkale
Software Engineer | EnterpriseDB Corporation
Attachments:
[application/octet-stream] RM5427.patch (6.6K, 3-RM5427.patch)
download | inline diff:
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/__init__.py
index 2891d2181..cecd7ad27 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/__init__.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/__init__.py
@@ -1070,6 +1070,10 @@ class TableView(BaseTableView, DataTypeReader, SchemaDiffTableCompare):
)
)
+ lock_on_table = self.get_table_locks(did, res['rows'][0])
+ if lock_on_table != '':
+ return lock_on_table
+
status, res = super(TableView, self).delete(gid, sid, did,
scid, tid, res)
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/static/js/table.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/static/js/table.js
index 60621c21f..33d46b162 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/static/js/table.js
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/static/js/table.js
@@ -205,6 +205,9 @@ define('pgadmin.node.table', [
t.select(i);
}, 10);
}
+ if (res.success == 2) {
+ Alertify.error(res.info, 0);
+ }
})
.fail(function(xhr, status, error) {
Alertify.pgRespErrorNotify(xhr, error);
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/default/get_application_name.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/default/get_application_name.sql
new file mode 100644
index 000000000..7f97337e1
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/default/get_application_name.sql
@@ -0,0 +1,8 @@
+SELECT
+ usename,
+ application_name
+FROM
+ pg_catalog.pg_stat_activity
+WHERE
+ pid = {{ pid }}
+ORDER BY pid
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/default/locks.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/default/locks.sql
new file mode 100644
index 000000000..b74f59ebd
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/default/locks.sql
@@ -0,0 +1,23 @@
+SELECT
+ pid,
+ locktype,
+ datname,
+ relation::regclass,
+ page,
+ tuple,
+ virtualxid
+ transactionid,
+ classid::regclass,
+ objid,
+ objsubid,
+ virtualtransaction,
+ mode,
+ granted,
+ fastpath
+FROM
+ pg_catalog.pg_locks l
+ LEFT OUTER JOIN pg_catalog.pg_database d ON (l.database = d.oid)
+{% if did %}WHERE
+ datname = (SELECT datname FROM pg_catalog.pg_database WHERE oid = {{ did }}){% endif %}
+ORDER BY
+ pid, locktype
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/utils.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/utils.py
index 9f370a951..aca27fd00 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/utils.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/utils.py
@@ -49,6 +49,7 @@ from pgadmin.utils.preferences import Preferences
from pgadmin.browser.server_groups.servers.databases.schemas.utils \
import VacuumSettings
from pgadmin.tools.schema_diff.node_registry import SchemaDiffRegistry
+from pgadmin.dashboard import locks
class BaseTableView(PGChildNodeView, BasePartitionTable, VacuumSettings):
@@ -1952,6 +1953,10 @@ class BaseTableView(PGChildNodeView, BasePartitionTable, VacuumSettings):
data = res['rows'][0]
+ lock_on_table = self.get_table_locks(did, data)
+ if lock_on_table != '':
+ return lock_on_table
+
sql = render_template("/".join([self.table_template_path,
'truncate.sql']),
data=data, cascade=is_cascade,
@@ -2004,6 +2009,41 @@ class BaseTableView(PGChildNodeView, BasePartitionTable, VacuumSettings):
'scid': scid
}
+ def get_table_locks(self, did, data):
+ """
+ This function returns the lock details if there is any on table
+ :param did:
+ :param data:
+ :return:
+ """
+ sql = render_template(
+ "/".join([self.table_template_path, 'locks.sql']), did=did
+ )
+ status, lock_table_result = self.conn.execute_dict(sql)
+
+ for row in lock_table_result['rows']:
+ if row['relation'].strip('\"') == data['name']:
+
+ sql = render_template(
+ "/".join([self.table_template_path,
+ 'get_application_name.sql']), pid=row['pid']
+ )
+ status, res = self.conn.execute_dict(sql)
+
+ application_name = res['rows'][0]['application_name']
+
+ return make_json_response(
+ success=2,
+ info=gettext(
+ "The table is currently locked and the "
+ "operation cannot be completed. "
+ "Please try again later. "
+ "\r\nBlocking Process ID : {0} "
+ "Application Name : {1}").format(row['pid'],
+ application_name)
+ )
+ return ''
+
def get_schema_and_table_name(self, tid):
"""
This function will fetch the schema qualified name of the
diff --git a/web/pgadmin/browser/static/js/node.js b/web/pgadmin/browser/static/js/node.js
index bd094dcfa..d9f887a39 100644
--- a/web/pgadmin/browser/static/js/node.js
+++ b/web/pgadmin/browser/static/js/node.js
@@ -838,6 +838,10 @@ define('pgadmin.browser.node', [
type: 'DELETE',
})
.done(function(res) {
+ if(res.success == 2){
+ Alertify.error(res.info, 0);
+ return;
+ }
if (res.success == 0) {
pgBrowser.report_error(res.errormsg, res.info);
} else {
@@ -867,7 +871,6 @@ define('pgadmin.browser.node', [
}
pgBrowser.report_error(
gettext('Error dropping/removing %s: "%s"', obj.label, objName), errmsg);
-
});
},
null
^ permalink raw reply [nested|flat] 4+ messages in thread
* Re: [pgAdmin][RM5427]: pgAdmin is freezing
2021-10-27 04:40 [pgAdmin][RM5427]: pgAdmin is freezing Pradip Parkale <[email protected]>
@ 2021-10-27 05:36 ` Akshay Joshi <[email protected]>
2021-11-08 08:49 ` Re: [pgAdmin][RM5427]: pgAdmin is freezing Pradip Parkale <[email protected]>
0 siblings, 1 reply; 4+ messages in thread
From: Akshay Joshi @ 2021-10-27 05:36 UTC (permalink / raw)
To: Pradip Parkale <[email protected]>; +Cc: pgadmin-hackers
Thanks, the patch applied.
On Wed, Oct 27, 2021 at 10:10 AM Pradip Parkale <
[email protected]> wrote:
> Hi Hackers,
>
> Please find the attached patch for #5427 pgAdmin is freezing.
>
>
> --
> Thanks & Regards,
> Pradip Parkale
> Software Engineer | EnterpriseDB Corporation
>
--
*Thanks & Regards*
*Akshay Joshi*
*pgAdmin Hacker | Principal Software Architect*
*EDB Postgres <http://edbpostgres.com>*
*Mobile: +91 976-788-8246*
^ permalink raw reply [nested|flat] 4+ messages in thread
* Re: [pgAdmin][RM5427]: pgAdmin is freezing
2021-10-27 04:40 [pgAdmin][RM5427]: pgAdmin is freezing Pradip Parkale <[email protected]>
2021-10-27 05:36 ` Re: [pgAdmin][RM5427]: pgAdmin is freezing Akshay Joshi <[email protected]>
@ 2021-11-08 08:49 ` Pradip Parkale <[email protected]>
2021-11-10 06:27 ` Re: [pgAdmin][RM5427]: pgAdmin is freezing Akshay Joshi <[email protected]>
0 siblings, 1 reply; 4+ messages in thread
From: Pradip Parkale @ 2021-11-08 08:49 UTC (permalink / raw)
To: Akshay Joshi <[email protected]>; +Cc: pgadmin-hackers
Hi Akshay,
Please find the attached patch.
On Wed, Oct 27, 2021 at 11:06 AM Akshay Joshi <[email protected]>
wrote:
> Thanks, the patch applied.
>
> On Wed, Oct 27, 2021 at 10:10 AM Pradip Parkale <
> [email protected]> wrote:
>
>> Hi Hackers,
>>
>> Please find the attached patch for #5427 pgAdmin is freezing.
>>
>>
>> --
>> Thanks & Regards,
>> Pradip Parkale
>> Software Engineer | EnterpriseDB Corporation
>>
>
>
> --
> *Thanks & Regards*
> *Akshay Joshi*
> *pgAdmin Hacker | Principal Software Architect*
> *EDB Postgres <http://edbpostgres.com>*
>
> *Mobile: +91 976-788-8246*
>
--
Thanks & Regards,
Pradip Parkale
Software Engineer | EnterpriseDB Corporation
Attachments:
[application/octet-stream] RM5427.patch (1.2K, 3-RM5427.patch)
download | inline diff:
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/__init__.py
index cecd7ad27..2dcb6ca3c 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/__init__.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/__init__.py
@@ -29,6 +29,7 @@ from pgadmin.browser.server_groups.servers.databases.schemas.tables.\
columns import utils as column_utils
from pgadmin.browser.server_groups.servers.databases.schemas.tables.\
constraints.exclusion_constraint import utils as exclusion_utils
+from pgadmin.utils.exception import ExecuteError
class TableModule(SchemaChildModule):
@@ -1024,6 +1025,11 @@ class TableView(BaseTableView, DataTypeReader, SchemaDiffTableCompare):
if not status:
return res
+ lock_on_table = self.get_table_locks(did, res['rows'][0])
+ if lock_on_table != '':
+ return ExecuteError(
+ error_msg=str(lock_on_table.json['info']))
+
return super(TableView, self).update(
gid, sid, did, scid, tid, data=data, res=res)
except Exception as e:
^ permalink raw reply [nested|flat] 4+ messages in thread
* Re: [pgAdmin][RM5427]: pgAdmin is freezing
2021-10-27 04:40 [pgAdmin][RM5427]: pgAdmin is freezing Pradip Parkale <[email protected]>
2021-10-27 05:36 ` Re: [pgAdmin][RM5427]: pgAdmin is freezing Akshay Joshi <[email protected]>
2021-11-08 08:49 ` Re: [pgAdmin][RM5427]: pgAdmin is freezing Pradip Parkale <[email protected]>
@ 2021-11-10 06:27 ` Akshay Joshi <[email protected]>
0 siblings, 0 replies; 4+ messages in thread
From: Akshay Joshi @ 2021-11-10 06:27 UTC (permalink / raw)
To: Pradip Parkale <[email protected]>; +Cc: pgadmin-hackers
Thanks, the patch applied.
On Mon, Nov 8, 2021 at 2:20 PM Pradip Parkale <
[email protected]> wrote:
> Hi Akshay,
>
> Please find the attached patch.
>
> On Wed, Oct 27, 2021 at 11:06 AM Akshay Joshi <
> [email protected]> wrote:
>
>> Thanks, the patch applied.
>>
>> On Wed, Oct 27, 2021 at 10:10 AM Pradip Parkale <
>> [email protected]> wrote:
>>
>>> Hi Hackers,
>>>
>>> Please find the attached patch for #5427 pgAdmin is freezing.
>>>
>>>
>>> --
>>> Thanks & Regards,
>>> Pradip Parkale
>>> Software Engineer | EnterpriseDB Corporation
>>>
>>
>>
>> --
>> *Thanks & Regards*
>> *Akshay Joshi*
>> *pgAdmin Hacker | Principal Software Architect*
>> *EDB Postgres <http://edbpostgres.com>*
>>
>> *Mobile: +91 976-788-8246*
>>
>
>
> --
> Thanks & Regards,
> Pradip Parkale
> Software Engineer | EnterpriseDB Corporation
>
--
*Thanks & Regards*
*Akshay Joshi*
*pgAdmin Hacker | Principal Software Architect*
*EDB Postgres <http://edbpostgres.com>*
*Mobile: +91 976-788-8246*
^ permalink raw reply [nested|flat] 4+ messages in thread
end of thread, other threads:[~2021-11-10 06:27 UTC | newest]
Thread overview: 4+ messages (download: mbox mbox.gz follow: Atom feed)
-- links below jump to the message on this page --
2021-10-27 04:40 [pgAdmin][RM5427]: pgAdmin is freezing Pradip Parkale <[email protected]>
2021-10-27 05:36 ` Akshay Joshi <[email protected]>
2021-11-08 08:49 ` Pradip Parkale <[email protected]>
2021-11-10 06:27 ` Akshay Joshi <[email protected]>
This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox