Re: Re: [COMMITTERS] pgsql: Perform only one ReadControlFile() during startup.

Andres Freund <andres@anarazel.de>

From: Andres Freund <andres@anarazel.de>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: pgsql-hackers@postgresql.org
Date: 2017-09-16T18:38:49Z
Lists: pgsql-hackers
On 2017-09-16 14:30:21 -0400, Tom Lane wrote:
> Andres Freund <andres@anarazel.de> writes:
> > Looking into it.
> 
> I wonder whether we shouldn't just revert this patch altogether.
> Certainly, extra reads of pg_control are not a noticeable performance
> problem.

The problem is that the patch that makes the segment size configurable
also adds a bunch more ordering constraints due to the fact that the
contents of the control file influence how much shared buffers are
needed (via wal_buffers = -1, which requires the segment size, which is
read from the control file).  Reading things in the wrong order leads to
bad results too.


> I'm now quite worried about whether we aren't introducing
> hazards of using stale values from the file; if a system crash isn't
> enough to get it to flush its cache, then what is?

I don't think the problem here is stale values, it's "just" a stale
pointer pointing into shared memory that gets reiniitalized?

Greetings,

Andres Freund


Commits

  1. Add test for postmaster crash restarts.

  2. Fix crash restart bug introduced in 8356753c212.

  3. Perform only one ReadControlFile() during startup.