pgsql: Standardize cleanup lock terminology. - Mailing list pgsql-committers

From Peter Geoghegan
Subject pgsql: Standardize cleanup lock terminology.
Date
Msg-id E1mv8C0-0001Kv-1A@gemulon.postgresql.org
Whole thread Raw
List pgsql-committers
Standardize cleanup lock terminology.

The term "super-exclusive lock" is a synonym for "buffer cleanup lock"
that first appeared in nbtree many years ago.  Standardize things by
consistently using the term cleanup lock.  This finishes work started by
commit 276db875.

There is no good reason to have two terms.  But there is a good reason
to only have one: to avoid confusion around why VACUUM acquires a full
cleanup lock (not just an ordinary exclusive lock) in index AMs, during
ambulkdelete calls.  This has nothing to do with protecting the physical
index data structure itself.  It is needed to implement a locking
protocol that ensures that TIDs pointing to the heap/table structure
cannot get marked for recycling by VACUUM before it is safe (which is
somewhat similar to how VACUUM uses cleanup locks during its first heap
pass).  Note that it isn't strictly necessary for index AMs to implement
this locking protocol -- several index AMs use an MVCC snapshot as their
sole interlock to prevent unsafe TID recycling.

In passing, update the nbtree README.  Cleanly separate discussion of
the aforementioned index vacuuming locking protocol from discussion of
the "drop leaf page pin" optimization added by commit 2ed5b87f.  We now
structure discussion of the latter by describing how individual index
scans may safely opt out of applying the standard locking protocol (and
so can avoid blocking progress by VACUUM).  Also document why the
optimization is not safe to apply during nbtree index-only scans.

Author: Peter Geoghegan <pg@bowt.ie>
Discussion: https://postgr.es/m/CAH2-WzngHgQa92tz6NQihf4nxJwRzCV36yMJO_i8dS+2mgEVKw@mail.gmail.com
Discussion: https://postgr.es/m/CAH2-WzkHPgsBBvGWjz=8PjNhDefy7XRkDKiT5NxMs-n5ZCf2dA@mail.gmail.com

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/bcf60585e6e0e95f0b9e5d64c7a6edca99ec6e86

Modified Files
--------------
src/backend/access/gin/README         |   2 +-
src/backend/access/heap/heapam.c      |   4 +-
src/backend/access/heap/pruneheap.c   |   2 +-
src/backend/access/nbtree/README      | 160 +++++++++++++++++++---------------
src/backend/access/nbtree/nbtpage.c   |   5 +-
src/backend/access/nbtree/nbtree.c    |   6 +-
src/backend/access/nbtree/nbtsearch.c |  11 +--
src/backend/storage/page/bufpage.c    |   8 +-
src/include/access/heapam_xlog.h      |   6 +-
9 files changed, 108 insertions(+), 96 deletions(-)


pgsql-committers by date:

Previous
From: Tom Lane
Date:
Subject: pgsql: Doc: improve xfunc-c-type-table.
Next
From: Andres Freund
Date:
Subject: Re: pgsql: Check that we have a working tar before trying to use it