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