From c670410e7fe59dffb0227ed1dd0f532013993859 Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Tue, 20 Apr 2010 01:38:52 +0000 Subject: Move the responsibility for calling StartupXLOG into InitPostgres, for those process types that go through InitPostgres; in particular, bootstrap and standalone-backend cases. This ensures that we have set up a PGPROC and done some other basic initialization steps (corresponding to the if (IsUnderPostmaster) block in AuxiliaryProcessMain) before we attempt to run WAL recovery in a standalone backend. As was discovered last September, this is necessary for some corner-case code paths during WAL recovery, particularly end-of-WAL cleanup. Moving the bootstrap case here too is not necessary for correctness, but it seems like a good idea since it reduces the number of distinct code paths. --- src/backend/tcop/postgres.c | 20 +++++--------------- 1 file changed, 5 insertions(+), 15 deletions(-) (limited to 'src/backend/tcop/postgres.c') diff --git a/src/backend/tcop/postgres.c b/src/backend/tcop/postgres.c index 287445b535e..b1d700a97e4 100644 --- a/src/backend/tcop/postgres.c +++ b/src/backend/tcop/postgres.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/tcop/postgres.c,v 1.592 2010/03/21 00:17:58 petere Exp $ + * $PostgreSQL: pgsql/src/backend/tcop/postgres.c,v 1.593 2010/04/20 01:38:52 tgl Exp $ * * NOTES * this is the "main" module of the postgres backend and @@ -3531,11 +3531,7 @@ PostgresMain(int argc, char *argv[], const char *username) PG_SETMASK(&BlockSig); /* block everything except SIGQUIT */ - if (IsUnderPostmaster) - { - BaseInit(); - } - else + if (!IsUnderPostmaster) { /* * Validate we have been given a reasonable-looking DataDir (if under @@ -3551,17 +3547,11 @@ PostgresMain(int argc, char *argv[], const char *username) * Create lockfile for data directory. */ CreateDataDirLockFile(false); - - BaseInit(); - - /* - * Start up xlog for standalone backend, and register to have it - * closed down at exit. - */ - StartupXLOG(); - on_shmem_exit(ShutdownXLOG, 0); } + /* Early initialization */ + BaseInit(); + /* * Create a per-backend PGPROC struct in shared memory, except in the * EXEC_BACKEND case where this was done in SubPostmasterMain. We must do -- cgit v1.2.3