Re: Adding an LWLockHeldByMe()-like function that reports if anybuffer content lock is held - Mailing list pgsql-hackers

From Michael Paquier
Subject Re: Adding an LWLockHeldByMe()-like function that reports if anybuffer content lock is held
Date
Msg-id 20180419004621.GD957@paquier.xyz
Whole thread Raw
In response to Adding an LWLockHeldByMe()-like function that reports if any buffercontent lock is held  (Peter Geoghegan <pg@bowt.ie>)
Responses Re: Adding an LWLockHeldByMe()-like function that reports if anybuffer content lock is held
List pgsql-hackers
On Wed, Apr 18, 2018 at 04:53:29PM -0700, Peter Geoghegan wrote:
> It occurred to me that it would be nice to be able to
> Assert(!AnyBufferLockHeldByMe()) at a certain point within
> index_form_tuple(), to make sure that our assumptions hold. If
> index_truncate_tuple() (or any other function) ever called
> index_form_tuple(), and ended up actually performing table access with
> an exclusive buffer lock held, we'd at least be able to catch the bug
> when assertions are enabled. A function that lets code assert that no
> buffer locks are held, for the rare cases where external table access
> is required seems like good general infrastructure.

Personally, I favor approaches like that, because it allows to catch up
problems in using some APIs when people working on a patch miss any kind
of warning comments at the top of the function or within it which
summarize the conditions under which something needs to be used.

> Does this seem like a good idea? This could get pretty expensive if it
> was overused, even by the standards of what we expect from
> assertion-enabled builds, but we could make it optional if the
> overhead got out of hand.

There are other places which could be improved, mentioned one here:
https://www.postgresql.org/message-id/CAB7nPqRJtKO5NLZZis3xxzH05sdAodG39qFdLQRg371Pi94PzQ%40mail.gmail.com
And if you see downthread this is a topic where it seems hard to reach a
consensus.
--
Michael

Attachment

pgsql-hackers by date:

Previous
From: Craig Ringer
Date:
Subject: Re: PostgreSQL's handling of fsync() errors is unsafe and risks data loss at least on XFS
Next
From: Michael Paquier
Date:
Subject: Re: reloption to prevent VACUUM from truncating empty pages at theend of relation