Currently we enable archive_mode only at server start. The reason for this was to protect against people enabling archive_mode half way through somebody else running a bulk load without WAL and then having an incomplete backup.
All we need to do is this: * When we change archive_mode to "on" get the next xid and place it in xlogctl. When we turn archive_mode "off" clear the value. * When we run pg_start_backup() check the xid and then wait for all transactions to end that can still see that xid before returning. This means there may be a delay after enabling archive_mode before we can run a backup, but normal running will not be interrupted. It's a fairly small change, touching just guc.c and xlog.c, using same code as DefineIndex() to wait. Objections? -- Simon Riggs www.2ndQuadrant.com PostgreSQL Training, Services and Support -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers