Re: ENOSPC FailedAssertion("!(RefCountErrors == 0)"

Robert Haas <robertmhaas@gmail.com>

From: Robert Haas <robertmhaas@gmail.com>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Kyotaro HORIGUCHI <horiguchi.kyotaro@lab.ntt.co.jp>, Andres Freund <andres@anarazel.de>, Michael Paquier <michael@paquier.xyz>, Justin Pryzby <pryzby@telsasoft.com>, "pgsql-hackers@postgresql.org" <pgsql-hackers@postgresql.org>
Date: 2018-07-18T17:03:20Z
Lists: pgsql-hackers
On Wed, Jul 18, 2018 at 10:33 AM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
>> So couldn't we use TopTransactionResourceOwner instead of
>> AuxProcessResrouceOwner? I feel a bit uneasy that bootstrap and
>> standalone-backend have *AuxProcess*ResourceOwner.
>
> Since the aux processes aren't running transactions, I didn't think
> that TopTransactionResourceOwner was appropriate.  There's also
> a problem for bootstrap and standalone backend cases: those do run
> transactions and therefore create/destroy TopTransactionResourceOwner,
> leaving nothing behind for ShutdownXLOG to use if it tries to use
> that.  We need an extra resowner somewhere.

FallbackResourceOwner?  DefaultResourceOwner? SessionResourceOwner?

-- 
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company


Commits

  1. Use a ResourceOwner to track buffer pins in all cases.