From 70d389faeaebe40fee42d915d776925d7b5e5067 Mon Sep 17 00:00:00 2001 From: Heikki Linnakangas Date: Sun, 5 Apr 2026 17:28:08 +0300 Subject: [PATCH v1 2/2] Check that the tranche name is unique in RequestNamedLWLockTranche You could request two tranches with same name, but things would get confusing when you called GetNamedLWLockTranche() to get the LWLocks allocated for them; it would always return the first tranche with the name. That doesn't make sense, so forbid duplicates. We still allow duplicates with LWLockNewTrancheId(). That works better as you don't use the name to look up the tranche ID later. It's still confusing in wait events, for example, but it's not dangerous in the same way. --- src/backend/storage/lmgr/lwlock.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/backend/storage/lmgr/lwlock.c b/src/backend/storage/lmgr/lwlock.c index 5cb696490d6..98138cb09d1 100644 --- a/src/backend/storage/lmgr/lwlock.c +++ b/src/backend/storage/lmgr/lwlock.c @@ -649,6 +649,13 @@ RequestNamedLWLockTranche(const char *tranche_name, int num_lwlocks) errdetail("No more than %d tranches may be registered.", MAX_USER_DEFINED_TRANCHES))); + /* Check that the name isn't already in use */ + foreach_ptr(NamedLWLockTrancheRequest, existing, NamedLWLockTrancheRequests) + { + if (strcmp(existing->tranche_name, tranche_name) == 0) + elog(ERROR, "requested tranche \"%s\" is already registered", tranche_name); + } + if (IsPostmasterEnvironment) oldcontext = MemoryContextSwitchTo(PostmasterContext); else -- 2.47.3