with_advisory_lock icon indicating copy to clipboard operation
with_advisory_lock copied to clipboard

Expose Postgres integer lock id

Open semaperepelitsa opened this issue 1 year ago • 0 comments

At the moment, the gem generates lock id automatically based on the given string. The resulting lock id is hidden as an implementation detail. However, it would be useful to know for debugging purposes - to see which DB session is holding the current lock, in case it is stuck, and be able to force-release it.

Here is how it could work:

info = User.with_advisory_lock_result("user-#{user.id}"){ ... }
unless info.lock_was_acquired?
  p info.lock_id #=> [2116437524, 0]
end
select * from pg_locks where classid = 2116437524;

semaperepelitsa avatar Jan 03 '24 07:01 semaperepelitsa