70.7. Advisory Locks #

Postgres Pro Shardman provides API for application to get cluster-wide advisory locks. They are similar to PostgreSQL advisory locks, but are respected on all cluster nodes. Advisory locks and global cluster-wide advisory locks work simultaneously and do not conflict with each other, as global cluster locks use its own locktag type. Both these lock types are shown in the pg_locks view and have the shardman value in locktype.

When global lock is taken, a coordinator sends a lock request to each node in a predefined order (based on rgid). When it's a usual lock request, the lock is considered granted when the statement succeeds on all nodes. When it's a try-lock request, the lock is also considered granted when it could be taken on all nodes. If one of the nodes couldn't take the lock, the try-lock function returns false. If one of the nodes returned result is different from earlier received (false after true or true after false), it is considered to be an error.

To see cluster-wide advisory lock functions, refer to Advisory Lock Functions for Distributed System.