diff --git a/doc/src/sgml/monitoring.sgml b/doc/src/sgml/monitoring.sgml
index e5b21cd8f61..42755659e1b 100644
--- a/doc/src/sgml/monitoring.sgml
+++ b/doc/src/sgml/monitoring.sgml
@@ -1750,31 +1750,31 @@ postgres 27093 0.0 0.0 30096 2752 ? Ss 11:34 0:00 postgres: ser
- AddinShmemInitLock
+ AddinShmemInit
Waiting to manage an extension's space allocation in shared
memory.
- AutoFileLock
+ AutoFile
Waiting to update the postgresql.auto.conf
file.
- AutovacuumLock
+ Autovacuum
Waiting to read or update the current state of autovacuum
workers.
- AutovacuumScheduleLock
+ AutovacuumSchedule
Waiting to ensure that a table selected for autovacuum
still needs vacuuming.
- BackgroundWorkerLock
+ BackgroundWorker
Waiting to read or update background worker state.
- BtreeVacuumLock
+ BtreeVacuum
Waiting to read or update vacuum-related information for a
B-tree index.
@@ -1792,15 +1792,15 @@ postgres 27093 0.0 0.0 30096 2752 ? Ss 11:34 0:00 postgres: ser
pool.
- CheckpointLock
+ Checkpoint
Waiting to begin a checkpoint.
- CheckpointerCommLock
+ CheckpointerComm
Waiting to manage fsync requests.
- CommitTsLock
+ CommitTs
Waiting to read or update the last value set for a
transaction commit timestamp.
@@ -1809,16 +1809,16 @@ postgres 27093 0.0 0.0 30096 2752 ? Ss 11:34 0:00 postgres: ser
Waiting for I/O on a commit timestamp SLRU buffer.
- CommitTsSLRULock
+ CommitTsSLRU
Waiting to access the commit timestamp SLRU cache.
- ControlFileLock
+ ControlFile
Waiting to read or update the pg_control
file or create a new WAL file.
- DynamicSharedMemoryControlLock
+ DynamicSharedMemoryControl
Waiting to read or update dynamic shared memory allocation
information.
@@ -1833,12 +1833,12 @@ postgres 27093 0.0 0.0 30096 2752 ? Ss 11:34 0:00 postgres: ser
about heavyweight
locks.
- LogicalRepWorkerLock
+ LogicalRepWorker
Waiting to read or update the state of logical replication
workers.
- MultiXactGenLock
+ MultiXactGen
Waiting to read or update shared multixact state.
@@ -1846,7 +1846,7 @@ postgres 27093 0.0 0.0 30096 2752 ? Ss 11:34 0:00 postgres: ser
Waiting for I/O on a multixact member SLRU buffer.
- MultiXactMemberSLRULock
+ MultiXactMemberSLRU
Waiting to access the multixact member SLRU cache.
@@ -1854,11 +1854,11 @@ postgres 27093 0.0 0.0 30096 2752 ? Ss 11:34 0:00 postgres: ser
Waiting for I/O on a multixact offset SLRU buffer.
- MultiXactOffsetSLRULock
+ MultiXactOffsetSLRU
Waiting to access the multixact offset SLRU cache.
- MultiXactTruncationLock
+ MultiXactTruncation
Waiting to read or truncate multixact information.
@@ -1867,20 +1867,20 @@ postgres 27093 0.0 0.0 30096 2752 ? Ss 11:34 0:00 postgres: ser
buffer.
- NotifyQueueLock
+ NotifyQueue
Waiting to read or update NOTIFY messages.
- NotifySLRULock
+ NotifySLRU
Waiting to access the NOTIFY message SLRU
cache.
- OidGenLock
+ OidGen
Waiting to allocate a new OID.
- OldSnapshotTimeMapLock
+ OldSnapshotTimeMap
Waiting to read or update old snapshot control information.
@@ -1922,24 +1922,24 @@ postgres 27093 0.0 0.0 30096 2752 ? Ss 11:34 0:00 postgres: ser
serializable transactions.
- ProcArrayLock
+ ProcArray
Waiting to access the shared per-process data structures
(typically, to get a snapshot or report a session's transaction
ID).
- RelationMappingLock
+ RelationMapping
Waiting to read or update
a pg_filenode.map file (used to track the
filenode assignments of certain system catalogs).
- RelCacheInitLock
+ RelCacheInit
Waiting to read or update a pg_internal.init
relation cache initialization file.
- ReplicationOriginLock
+ ReplicationOrigin
Waiting to create, drop or use a replication origin.
@@ -1948,11 +1948,11 @@ postgres 27093 0.0 0.0 30096 2752 ? Ss 11:34 0:00 postgres: ser
origin.
- ReplicationSlotAllocationLock
+ ReplicationSlotAllocation
Waiting to allocate or free a replication slot.
- ReplicationSlotControlLock
+ ReplicationSlotControl
Waiting to read or update replication slot state.
@@ -1965,22 +1965,22 @@ postgres 27093 0.0 0.0 30096 2752 ? Ss 11:34 0:00 postgres: ser
buffer.
- SerializableFinishedListLock
+ SerializableFinishedList
Waiting to access the list of finished serializable
transactions.
- SerializablePredicateListLock
+ SerializablePredicateList
Waiting to access the list of predicate locks held by
serializable transactions.
- SerializableXactHashLock
+ SerializableXactHash
Waiting to read or update information about serializable
transactions.
- SerialSLRULock
+ SerialSLRU
Waiting to access the serializable transaction conflict SLRU
cache.
@@ -1995,16 +1995,16 @@ postgres 27093 0.0 0.0 30096 2752 ? Ss 11:34 0:00 postgres: ser
query.
- ShmemIndexLock
+ ShmemIndex
Waiting to find or allocate space in shared memory.
- SInvalReadLock
+ SInvalRead
Waiting to retrieve messages from the shared catalog invalidation
queue.
- SInvalWriteLock
+ SInvalWrite
Waiting to add a message to the shared catalog invalidation
queue.
@@ -2013,29 +2013,29 @@ postgres 27093 0.0 0.0 30096 2752 ? Ss 11:34 0:00 postgres: ser
Waiting for I/O on a sub-transaction SLRU buffer.
- SubtransSLRULock
+ SubtransSLRU
Waiting to access the sub-transaction SLRU cache.
- SyncRepLock
+ SyncRep
Waiting to read or update information about the state of
synchronous replication.
- SyncScanLock
+ SyncScan
Waiting to select the starting location of a synchronized table
scan.
- TablespaceCreateLock
+ TablespaceCreate
Waiting to create or drop a tablespace.
- TwoPhaseStateLock
+ TwoPhaseState
Waiting to read or update the state of prepared transactions.
- WALBufMappingLock
+ WALBufMapping
Waiting to replace a page in WAL buffers.
@@ -2043,7 +2043,7 @@ postgres 27093 0.0 0.0 30096 2752 ? Ss 11:34 0:00 postgres: ser
Waiting to insert WAL data into a memory buffer.
- WALWriteLock
+ WALWrite
Waiting for WAL buffers to be written to disk.
@@ -2051,16 +2051,16 @@ postgres 27093 0.0 0.0 30096 2752 ? Ss 11:34 0:00 postgres: ser
Waiting for I/O on a transaction status SLRU buffer.
- XactSLRULock
+ XactSLRU
Waiting to access the transaction status SLRU cache.
- XactTruncationLock
+ XactTruncation
Waiting to execute pg_xact_status or update
the oldest transaction ID available to it.
- XidGenLock
+ XidGen
Waiting to allocate a new transaction ID.
diff --git a/src/backend/storage/lmgr/generate-lwlocknames.pl b/src/backend/storage/lmgr/generate-lwlocknames.pl
index 50fb8625cad..ca54acdfb0f 100644
--- a/src/backend/storage/lmgr/generate-lwlocknames.pl
+++ b/src/backend/storage/lmgr/generate-lwlocknames.pl
@@ -23,7 +23,7 @@ print $h $autogen;
print $h "/* there is deliberately not an #ifndef LWLOCKNAMES_H here */\n\n";
print $c $autogen, "\n";
-print $c "const char *const MainLWLockNames[] = {";
+print $c "const char *const IndividualLWLockNames[] = {";
while (<$lwlocknames>)
{
@@ -38,6 +38,10 @@ while (<$lwlocknames>)
(my $lockname, my $lockidx) = ($1, $2);
+ my $trimmedlockname = $lockname;
+ $trimmedlockname =~ s/Lock$//;
+ die "lock names must end with 'Lock'" if $trimmedlockname eq $lockname;
+
die "lwlocknames.txt not in order" if $lockidx < $lastlockidx;
die "lwlocknames.txt has duplicates" if $lockidx == $lastlockidx;
@@ -47,7 +51,7 @@ while (<$lwlocknames>)
printf $c "%s \"\"", $continue, $lastlockidx;
$continue = ",\n";
}
- printf $c "%s \"%s\"", $continue, $lockname;
+ printf $c "%s \"%s\"", $continue, $trimmedlockname;
$lastlockidx = $lockidx;
$continue = ",\n";
diff --git a/src/backend/storage/lmgr/lwlock.c b/src/backend/storage/lmgr/lwlock.c
index 0bdc8e0499d..2fa90cc0954 100644
--- a/src/backend/storage/lmgr/lwlock.c
+++ b/src/backend/storage/lmgr/lwlock.c
@@ -111,7 +111,7 @@ extern slock_t *ShmemLock;
* There are three sorts of LWLock "tranches":
*
* 1. The individually-named locks defined in lwlocknames.h each have their
- * own tranche. The names of these tranches appear in MainLWLockNames[]
+ * own tranche. The names of these tranches appear in IndividualLWLockNames[]
* in lwlocknames.c.
*
* 2. There are some predefined tranches for built-in groups of locks.
@@ -125,6 +125,7 @@ extern slock_t *ShmemLock;
* All these names are user-visible as wait event names, so choose with care
* ... and do not forget to update the documentation's list of wait events.
*/
+extern const char *const IndividualLWLockNames[]; /* in lwlocknames.c */
static const char *const BuiltinTrancheNames[] = {
/* LWTRANCHE_XACT_BUFFER: */
@@ -781,7 +782,7 @@ GetLWTrancheName(uint16 trancheId)
{
/* Individual LWLock? */
if (trancheId < NUM_INDIVIDUAL_LWLOCKS)
- return MainLWLockNames[trancheId];
+ return IndividualLWLockNames[trancheId];
/* Built-in tranche? */
if (trancheId < LWTRANCHE_FIRST_USER_DEFINED)
diff --git a/src/include/storage/lwlock.h b/src/include/storage/lwlock.h
index d8e1b5c493e..c04ae971485 100644
--- a/src/include/storage/lwlock.h
+++ b/src/include/storage/lwlock.h
@@ -88,7 +88,6 @@ typedef union LWLockMinimallyPadded
} LWLockMinimallyPadded;
extern PGDLLIMPORT LWLockPadded *MainLWLockArray;
-extern const char *const MainLWLockNames[];
/* struct for storing named tranche information */
typedef struct NamedLWLockTranche