Hi,
I don't really feel confident we're going to get the timeout approach solid
enough for something going into the tree around beta 1.
How about this, imo a lot simpler, approach: We flush stats whenever replaying
a XLOG_RUNNING_XACTS record. Unless the primary is idle, it will log those at
a regular interval. If the primary is idle, we don't need to flush stats in
the startup process, because we'll not have done any io.
We only log XLOG_RUNNING_XACTS when wal_level >= replica, so stats wouldn't
get regularly flushed if wal_level = minimal - but in that case the stats are
also not accessible, so that's not a problem.
It's not the prettiest solution, but I think the simplicity is worth a lot.
Greetings,
Andres Freund