Re: Incorrect logic in XLogNeedsFlush()

Dilip Kumar <dilipbalaut@gmail.com>

From: Dilip Kumar <dilipbalaut@gmail.com>
To: Jeff Davis <pgsql@j-davis.com>
Cc: Michael Paquier <michael@paquier.xyz>, Melanie Plageman <melanieplageman@gmail.com>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>, Andres Freund <andres@anarazel.de>
Date: 2025-09-15T02:46:01Z
Lists: pgsql-hackers
On Sun, Sep 14, 2025 at 11:23 PM Jeff Davis <pgsql@j-davis.com> wrote:
>
> On Sun, 2025-09-14 at 13:39 +0530, Dilip Kumar wrote:
> > I tried to improve it in v2
>
> Thank you. Looks good to me.

Thanks

> >
> > IMHO during crash recovery LocalMinRecoveryPoint and
> > ControlFile->minRecoveryPoint can not initialized until we replay all
> > WAL so those should never get accessed.  However if XLogNeedsFlush()
> > were called during the end of the recovery checkpoint it was
> > accessing
> > this which was wrong although it was not a live bug and this patch is
> > making that more resilient.
>
> OK, so this will no longer be a concern after the patch (and not a live
> bug before, anyway).

That's my take, but I'd like to hear Melanie's thoughts on this point
as she raised this concern.

-- 
Regards,
Dilip Kumar
Google



Commits

  1. Reorder XLogNeedsFlush() checks to be more consistent

  2. Make XLogFlush() and XLogNeedsFlush() decision-making more consistent