On 02.11.2010 16:30, Tom Lane wrote:
Heikki Linnakangas<heikki.linnakan...@enterprisedb.com>  writes:
I think we can fix this by requiring that any multi-WAL-record actions
that are in-progress when a checkpoint starts (at the REDO-pointer) must
finish before the checkpoint record is written.

What happens if someone wants to start a new split while the checkpoint
is hanging fire?

You mean after CreateCheckPoint has determined the redo pointer, but before it has written the checkpoint record? The new split can go ahead, and the checkpoint doesn't need care about it. Recovery will start at the redo pointer, so it will see the split record, and will know to finish the incomplete split if necessary.

The logic is the same as with inCommit. Checkpoint will fetch the list of in-progress splits some time after determining the redo-pointer. It will then wait until all of those splits have finished. Any new splits that begin after fetching the list don't affect the checkpoint.

inCommit can't be used as is, because it's tied to the Xid, but something similar should work.

--
  Heikki Linnakangas
  EnterpriseDB   http://www.enterprisedb.com

--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to