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