with_advisory_lock
with_advisory_lock copied to clipboard
Expose Postgres integer lock id
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;