From 71b2b657c034743f81ae7906d7b0fcc8e9a0a6a3 Mon Sep 17 00:00:00 2001 From: Robert Haas Date: Thu, 10 Nov 2011 17:54:27 -0500 Subject: [PATCH] Revert removal of trace_userlocks, because userlocks aren't gone. This reverts commit 0180bd6180511875db046bf8ddcaa633a2952dfd. contrib/userlock is gone, but user-level locking still exists, and is exposed via the pg_advisory* family of functions. --- doc/src/sgml/config.sgml | 22 ++++++++++++++++++++++ src/backend/storage/lmgr/lock.c | 8 +++++++- src/backend/utils/misc/check_guc | 2 +- src/backend/utils/misc/guc.c | 10 ++++++++++ src/include/storage/lock.h | 1 + 5 files changed, 41 insertions(+), 2 deletions(-) diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml index 3ace7dfa93..18b39ea0a9 100644 --- a/doc/src/sgml/config.sgml +++ b/doc/src/sgml/config.sgml @@ -6217,6 +6217,28 @@ LOG: CleanUpLock: deleting: lock(0xb7acd844) id(24688,24696,0,0,0,1) + + trace_userlocks (boolean) + + trace_userlocks configuration parameter + + + + If on, emit information about user lock usage. Output is the same + as for trace_locks, only for user locks. + + + User locks were removed as of PostgreSQL version 8.2. This option + currently has no effect. + + + This parameter is only available if the LOCK_DEBUG + macro was defined when PostgreSQL was + compiled. + + + + trace_lock_oidmin (integer) diff --git a/src/backend/storage/lmgr/lock.c b/src/backend/storage/lmgr/lock.c index ed8344ff8f..905502f145 100644 --- a/src/backend/storage/lmgr/lock.c +++ b/src/backend/storage/lmgr/lock.c @@ -213,7 +213,12 @@ static const LockMethodData user_lockmethod = { AccessExclusiveLock, /* highest valid lock mode number */ true, LockConflicts, - lock_mode_names + lock_mode_names, +#ifdef LOCK_DEBUG + &Trace_userlocks +#else + &Dummy_trace +#endif }; /* @@ -271,6 +276,7 @@ static ResourceOwner awaitedOwner; int Trace_lock_oidmin = FirstNormalObjectId; bool Trace_locks = false; +bool Trace_userlocks = false; int Trace_lock_table = 0; bool Debug_deadlocks = false; diff --git a/src/backend/utils/misc/check_guc b/src/backend/utils/misc/check_guc index 91c1c581ac..293fb0363f 100755 --- a/src/backend/utils/misc/check_guc +++ b/src/backend/utils/misc/check_guc @@ -20,7 +20,7 @@ INTENTIONALLY_NOT_INCLUDED="autocommit debug_deadlocks \ is_superuser lc_collate lc_ctype lc_messages lc_monetary lc_numeric lc_time \ pre_auth_delay role seed server_encoding server_version server_version_int \ session_authorization trace_lock_oidmin trace_lock_table trace_locks trace_lwlocks \ -trace_notify transaction_isolation transaction_read_only \ +trace_notify trace_userlocks transaction_isolation transaction_read_only \ zero_damaged_pages" ### What options are listed in postgresql.conf.sample, but don't appear diff --git a/src/backend/utils/misc/guc.c b/src/backend/utils/misc/guc.c index a22272c6b7..da7b6d4e90 100644 --- a/src/backend/utils/misc/guc.c +++ b/src/backend/utils/misc/guc.c @@ -1060,6 +1060,16 @@ static struct config_bool ConfigureNamesBool[] = false, NULL, NULL, NULL }, + { + {"trace_userlocks", PGC_SUSET, DEVELOPER_OPTIONS, + gettext_noop("No description available."), + NULL, + GUC_NOT_IN_SAMPLE + }, + &Trace_userlocks, + false, + NULL, NULL, NULL + }, { {"trace_lwlocks", PGC_SUSET, DEVELOPER_OPTIONS, gettext_noop("No description available."), diff --git a/src/include/storage/lock.h b/src/include/storage/lock.h index bc746a39e4..e106ad5401 100644 --- a/src/include/storage/lock.h +++ b/src/include/storage/lock.h @@ -34,6 +34,7 @@ extern int max_locks_per_xact; #ifdef LOCK_DEBUG extern int Trace_lock_oidmin; extern bool Trace_locks; +extern bool Trace_userlocks; extern int Trace_lock_table; extern bool Debug_deadlocks; #endif /* LOCK_DEBUG */