Re: Are advisory locks guaranteed to be First Come First Serve? And can the behavior be relied upon?

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Laurenz Albe <laurenz(dot)albe(at)cybertec(dot)at>
Cc: Hemil Ruparel <hemilruparel2002(at)gmail(dot)com>, pgsql-general(at)lists(dot)postgresql(dot)org
Subject: Re: Are advisory locks guaranteed to be First Come First Serve? And can the behavior be relied upon?
Date: 2020-08-27 13:44:33
Message-ID: 3028225.1598535873@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Laurenz Albe <laurenz(dot)albe(at)cybertec(dot)at> writes:
> On Thu, 2020-08-27 at 10:10 +0530, Hemil Ruparel wrote:
>> I was playing with Advisory locks. I opened three connections to the database And obtained
>> a lock with the same key. I noticed that the locks were obtained in the order of requests.
>> I was wondering whether the locks are guaranteed to be First Come First Serve and can this
>> behaviour be relied upon.

> Yes - lock requests that block are queued, with later lock requests queued behind previous
> ones. Once a lock gets free, the first in line gets it.

> This is the same for all heavyweight locks in PostgreSQL.

There is an exception: the queue order will be rearranged if we find
that doing so is necessary to avoid a deadlock failure. See
src/backend/storage/lmgr/README

regards, tom lane

In response to

Browse pgsql-general by date

  From Date Subject
Next Message Daniel Jakots 2020-08-27 15:28:46 could not send data to client: Permission denied
Previous Message Susan Joseph 2020-08-27 10:57:19 Re: SSL between Primary and Seconday PostgreSQL DBs