Re: Standalone backends run StartupXLOG in an incorrect environment
Tom Lane <tgl@sss.pgh.pa.us>
From: Tom Lane <tgl@sss.pgh.pa.us>
To: Robert Haas <robertmhaas@gmail.com>, Bruce Momjian <bruce@momjian.us>, Simon Riggs <simon@2ndquadrant.com>, pgsql-hackers@postgresql.org
Date: 2010-04-19T18:34:20Z
Lists: pgsql-hackers
I wrote: > The point is that a standalone backend will fail to execute recovery > correctly: > http://archives.postgresql.org/pgsql-hackers/2009-09/msg01297.php After digging around a bit, it seems like the cleanest solution would be to move the responsibility for calling StartupXLOG in a standalone backend into InitPostgres. At the point where the latter currently has /* * Initialize local process's access to XLOG, if appropriate. In * bootstrap case we skip this since StartupXLOG() was run instead. */ if (!bootstrap) (void) RecoveryInProgress(); we'd add a couple of lines to call StartupXLOG if !IsUnderPostmaster, and then remove the call from postgres.c. I haven't tested this yet but it looks like the correct state has been set up at that point. Anyone see any obvious holes in the idea? regards, tom lane