pgsql: Start background writer during archive recovery.

From: heikki(at)postgresql(dot)org (Heikki Linnakangas)
To: pgsql-committers(at)postgresql(dot)org
Subject: pgsql: Start background writer during archive recovery.
Date: 2009-02-18 15:58:41
Message-ID: 20090218155841.7EFD37559ED@cvs.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers pgsql-hackers

Log Message:
-----------
Start background writer during archive recovery. Background writer now performs
its usual buffer cleaning duties during archive recovery, and it's responsible
for performing restartpoints.

This requires some changes in postmaster. When the startup process has done
all the initialization and is ready to start WAL redo, it signals the
postmaster to launch the background writer. The postmaster is signaled again
when the point in recovery is reached where we know that the database is in
consistent state. Postmaster isn't interested in that at the moment, but
that's the point where we could let other backends in to perform read-only
queries. The postmaster is signaled third time when the recovery has ended,
so that postmaster knows that it's safe to start accepting connections.

The startup process now traps SIGTERM, and performs a "clean" shutdown. If
you do a fast shutdown during recovery, a shutdown restartpoint is performed,
like a shutdown checkpoint, and postmaster kills the processes cleanly. You
still have to continue the recovery at next startup, though.

Currently, the background writer is only launched during archive recovery.
We could launch it during crash recovery as well, but it seems better to keep
that codepath as simple as possible, for the sake of robustness. And it
couldn't do any restartpoints during crash recovery anyway, so it wouldn't be
that useful.

log_restartpoints is gone. Use log_checkpoints instead. This is yet to be
documented.

This whole operation is a pre-requisite for Hot Standby, but has some value of
its own whether the hot standby patch makes 8.4 or not.

Simon Riggs, with lots of modifications by me.

Modified Files:
--------------
pgsql/src/backend/access/transam:
xlog.c (r1.330 -> r1.331)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/transam/xlog.c?r1=1.330&r2=1.331)
pgsql/src/backend/bootstrap:
bootstrap.c (r1.249 -> r1.250)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/bootstrap/bootstrap.c?r1=1.249&r2=1.250)
pgsql/src/backend/postmaster:
bgwriter.c (r1.55 -> r1.56)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/postmaster/bgwriter.c?r1=1.55&r2=1.56)
postmaster.c (r1.570 -> r1.571)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/postmaster/postmaster.c?r1=1.570&r2=1.571)
pgsql/src/backend/storage/buffer:
README (r1.15 -> r1.16)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/storage/buffer/README?r1=1.15&r2=1.16)
pgsql/src/backend/utils/init:
postinit.c (r1.187 -> r1.188)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/utils/init/postinit.c?r1=1.187&r2=1.188)
pgsql/src/include/access:
xlog.h (r1.90 -> r1.91)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/access/xlog.h?r1=1.90&r2=1.91)
pgsql/src/include/storage:
pmsignal.h (r1.21 -> r1.22)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/storage/pmsignal.h?r1=1.21&r2=1.22)

Responses

Browse pgsql-committers by date

  From Date Subject
Next Message User Bmomjian 2009-02-18 18:00:55 pg-migrator - src: Issue suggestion about updating oid in new server.
Previous Message User Mkz 2009-02-18 13:50:09 pgbouncer - pgbouncer: update docs and default config

Browse pgsql-hackers by date

  From Date Subject
Next Message Heikki Linnakangas 2009-02-18 16:01:53 Re: Hot standby, recovery infra
Previous Message Robert Haas 2009-02-18 15:57:52 Re: The science of optimization in practical terms?