Re: Adding locks statistics

Michael Paquier <michael@paquier.xyz>

From: Michael Paquier <michael@paquier.xyz>
To: Andres Freund <andres@anarazel.de>
Cc: Bertrand Drouvot <bertranddrouvot.pg@gmail.com>, Jeff Davis <pgsql@j-davis.com>, Greg Sabino Mullane <htamfids@gmail.com>, pgsql-hackers@lists.postgresql.org
Date: 2026-04-06T06:19:57Z
Lists: pgsql-hackers
On Mon, Apr 06, 2026 at 01:22:23AM -0400, Andres Freund wrote:
> https://cirrus-ci.com/task/6253659454963712
> https://api.cirrus-ci.com/v1/artifact/task/6253659454963712/testrun/build/testrun/test_misc/011_lock_stats/log/regress_log_011_lock_stats
> 
> [04:33:31.756](0.067s) # die: error running SQL: 'psql:<stdin>:1: ERROR:  could not detach injection point "deadlock-timeout-fired"'

I got a way to reproduce the same error pattern with the following
trick:
--- a/src/backend/utils/misc/injection_point.c
+++ b/src/backend/utils/misc/injection_point.c
@@ -357,6 +357,8 @@ InjectionPointDetach(const char *name)
    int         idx;
    int         max_inuse;

+   pg_usleep(5 * 1000000L);
+
    LWLockAcquire(InjectionPointLock, LW_EXCLUSIVE);

Now looking at it, and for the reason why 010 for concurrent indexes
does not complain..
--
Michael

Commits

Same data as JSON: GET /api/v1/messages/:b64id/commits the thread's linked commits as JSON, with link sources. API reference →
  1. Fix injection point detach timing problem in TAP test for lock stats

  2. Use single LWLock for lock statistics in pgstats

  3. Add tests for lock statistics, take two

  4. Remove isolation test lock-stats

  5. Avoid including clog.h in proc.h

  6. Don't include storage/lock.h in so many headers

  7. Add support for lock statistics in pgstats

  8. Move some code blocks in lock.c and proc.c

  9. Move declarations related to locktags from lock.h to new locktag.h