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.