pgsql: Assert that we don't acquire a heavyweight lock on another objec

From: Amit Kapila <akapila(at)postgresql(dot)org>
To: pgsql-committers(at)lists(dot)postgresql(dot)org
Subject: pgsql: Assert that we don't acquire a heavyweight lock on another objec
Date: 2020-03-18 01:58:33
Message-ID: E1jENyb-0003IR-QB@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Assert that we don't acquire a heavyweight lock on another object after
relation extension lock.

The only exception to the rule is that we can try to acquire the same
relation extension lock more than once. This is allowed as we are not
creating any new lock for this case. This restriction implies that the
relation extension lock won't ever participate in the deadlock cycle
because we can never wait for any other heavyweight lock after acquiring
this lock.

Such a restriction is okay for relation extension locks as unlike other
heavyweight locks these are not held till the transaction end. These are
taken for a short duration to extend a particular relation and then
released.

Author: Dilip Kumar, with few changes by Amit Kapila
Reviewed-by: Amit Kapila, Kuntal Ghosh and Sawada Masahiko
Discussion: https://postgr.es/m/CAD21AoCmT3cFQUN4aVvzy5chw7DuzXrJCbrjTU05B+Ss=Gn1LA@mail.gmail.com

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/15ef6ff4b985276c386adf3e11ebf7f955ea6f1f

Modified Files
--------------
src/backend/storage/lmgr/lock.c | 47 +++++++++++++++++++++++++++++++++++++++++
src/include/storage/lock.h | 1 +
2 files changed, 48 insertions(+)

Browse pgsql-committers by date

  From Date Subject
Next Message Michael Paquier 2020-03-18 01:59:48 Re: pgsql: Revert "initdb: Change authentication defaults"
Previous Message Peter Geoghegan 2020-03-18 01:39:46 pgsql: nbtree: Remove useless local variables.