Adding some error context for lock wait failures
Tom Lane <tgl@sss.pgh.pa.us>
From: Tom Lane <tgl@sss.pgh.pa.us>
To: pgsql-hackers@lists.postgresql.org
Cc: Steve Baldwin <steve.baldwin@gmail.com>
Date: 2025-07-10T17:05:54Z
Lists: pgsql-hackers
Attachments
- v1-provide-errcontext-in-WaitOnLock.patch (text/x-diff) patch v1
I noted a complaint [1] about how hard it is to debug unforeseen lock-timeout failures: we give no details about what we were waiting for. It's not hard to improve that situation, at least to the extent of printing numeric locktag details similar to what you get in deadlock reports. (It'd be nice to give object names, but just as with deadlocks, incurring any additional lock acquisitions here seems too scary.) The attached patch will produce reports like regression=# begin; BEGIN regression=*# lock table tenk1; ^CCancel request sent ERROR: canceling statement due to user request CONTEXT: waiting for AccessExclusiveLock on relation 77382 of database 77348 regression=!# abort; ROLLBACK regression=# set lock_timeout TO '1s'; SET regression=# begin; BEGIN regression=*# lock table tenk1; ERROR: canceling statement due to lock timeout CONTEXT: waiting for AccessExclusiveLock on relation 77382 of database 77348 and then the user can manually look up the object's identity. Thoughts? regards, tom lane [1] https://www.postgresql.org/message-id/CAKE1AiY17RgcKCFba1N6Sz6SjHqSqvq%2BcfKWBfyKFEjT-L%2Bqkg%40mail.gmail.com
Commits
-
Clean up memory leakage that occurs in context callback functions.
- 89d57c1fb355 19 (unreleased) landed
-
Provide error context when an error is thrown within WaitOnLock().
- f727b63e8107 19 (unreleased) landed