Re: 17.8 standby crashes during WAL replay from 17.5 primary: "could not access status of transaction" - Mailing list pgsql-bugs

From Andrey Borodin
Subject Re: 17.8 standby crashes during WAL replay from 17.5 primary: "could not access status of transaction"
Date
Msg-id FC778C81-C310-4F9B-99EC-920EAF853F8C@yandex-team.ru
Whole thread Raw
In response to Re: 17.8 standby crashes during WAL replay from 17.5 primary: "could not access status of transaction"  (Heikki Linnakangas <hlinnaka@iki.fi>)
Responses Re: 17.8 standby crashes during WAL replay from 17.5 primary: "could not access status of transaction"
List pgsql-bugs
Ouch...

I remember this place. For some reason I thought endTruncOff is the end of offsets. That would make sense here... Now I
seeit's just a new oldest offset. 

> On 14 Feb 2026, at 16:42, Heikki Linnakangas <hlinnaka@iki.fi> wrote:
>
> If we want to play it even more safe -- and I guess that's the right thing to do for backpatching -- we could set
latest_page_number*temporarily* while we do the the truncation, and restore the old value afterwards. 

As far as I can see, the only relevant usage of last_page_number is:
/*
 * While we are holding the lock, make an important safety check: the
 * current endpoint page must not be eligible for removal.
 */
if (ctl->PagePrecedes(shared->latest_page_number, cutoffPage))
{
    LWLockRelease(shared->ControlLock);
    ereport(LOG,
        (errmsg("could not truncate directory \"%s\": apparent wraparound",
        ctl->Dir)));
    return;
}


Perhaps, we also can bump latest_page_number forward?


Best regards, Andrey Borodin.


pgsql-bugs by date:

Previous
From: Richard Guo
Date:
Subject: Re: BUG #19405: Assertion in eval_windowaggregates() fails due to integer overflow
Next
From: Andrey Borodin
Date:
Subject: Re: 17.8 standby crashes during WAL replay from 17.5 primary: "could not access status of transaction"