Hi,

On 2021-08-31 18:09:36 +0000, Bossart, Nathan wrote:
> On 8/31/21, 10:21 AM, "Andres Freund" <and...@anarazel.de> wrote:
> > What would trigger the flushing? We don't write out partially filled pages
> > unless
> > a) we're explicitly flushing an LSN on the partial page (e.g. because a
> >    synchronous commit record resides on it)
> > b) there's an async commit (i.e. commit with synchronous_commit=off) on the
> >    page
> 
> Ah, so your point is that an open transaction that has written a
> partial page on the next segment wouldn't trigger a flush.

Doesn't have to be a transaction, can be a checkpoint or xl_running_xacts, or
... as well.


> What appears to happen in this case is that bgwriter eventually creates a
> xl_running_xacts record and nudges walwriter to flush it to disk, at which
> point the .ready file(s) will be created.  That's admittedly a bit fragile.

That's not guaranteed to happen. If e.g. the partial record is a checkpoint or
a xl_running_xacts, we'll not trigger further WAL writes in the background,
unless autovacuum ends up doing something.

Regards,

Andres


Reply via email to