Re: Is it OK to perform logging while holding a LWLock?

From: Michael Paquier <michael(at)paquier(dot)xyz>
To: Masahiko Sawada <sawada(dot)mshk(at)gmail(dot)com>
Cc: Chao Li <li(dot)evan(dot)chao(at)gmail(dot)com>, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Postgres hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Subject: Re: Is it OK to perform logging while holding a LWLock?
Date: 2026-03-04 00:15:19
Message-ID: aad5l1G4pdBYaWBj@paquier.xyz
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Tue, Mar 03, 2026 at 12:48:26PM -0800, Masahiko Sawada wrote:
> Also, if we reverse the ereport() and LWLockRelease() in the specific
> example in logicalctl.c, it would happen that a concurrent logical
> decoding activation writes the log "logical decoding is enabled upon
> creating a new logical replication slot" before the deactivation
> "logical decoding is disabled because there are no valid logical
> replication slots", confusing users since the logical decoding is
> active even though the last log saying "logical decoding is disabled".

I don't really understand why we need to care about changing these
code paths. LWLocks are not bound to requirements like avoiding
elog() or Postgres-specific calls while being hold, so what we are
doing is basically fine. None of the code paths changed here are
relevant performance-wise, as well. Hence, why caring at all with
such changes?
--
Michael

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Michael Paquier 2026-03-04 00:21:14 Re: Fix incorrect assignment for nodeid in TransactionIdGetCommitTsData()
Previous Message Masahiko Sawada 2026-03-03 23:37:47 Re: Is it OK to perform logging while holding a LWLock?