On Sat, Feb 1, 2014 at 12:50 PM, Robert Haas <[email protected]> wrote:
> Introduce replication slots.
>
> Replication slots are a crash-safe data structure which can be created
> on either a master or a standby to prevent premature removal of
> write-ahead log segments needed by a standby, as well as (with
> hot_standby_feedback=on) pruning of tuples whose removal would cause
> replication conflicts. Slots have some advantages over existing
> techniques, as explained in the documentation.
>
> In a few places, we refer to the type of replication slots introduced
> by this patch as "physical" slots, because forthcoming patches for
> logical decoding will also have slots, but with somewhat different
> properties.
This patch changed basebackup.c so that it skips pg_replslot. It's OK
to skip all files in that directory, but an empty pg_replslot must be
included in the backup. Otherwise we cannot start PostgreSQL from
the backup taken via pg_basebackup. Attached patch fixes this problem.
Regards,
--
Fujii Masao
*** a/src/backend/replication/basebackup.c
--- b/src/backend/replication/basebackup.c
***************
*** 847,856 **** sendDir(char *path, int basepathlen, bool sizeonly, List *tablespaces)
if (strcmp(de->d_name, BACKUP_LABEL_FILE) == 0)
continue;
- /* Skip pg_replslot, not useful to copy */
- if (strcmp(de->d_name, "pg_replslot") == 0)
- continue;
-
/*
* Check if the postmaster has signaled us to exit, and abort with an
* error in that case. The error handler further up will call
--- 847,852 ----
***************
*** 892,897 **** sendDir(char *path, int basepathlen, bool sizeonly, List *tablespaces)
--- 888,905 ----
}
/*
+ * Skip pg_replslot, not useful to copy. But include it as an empty
+ * directory anyway, so we get permissions right.
+ */
+ if (strcmp(de->d_name, "pg_replslot") == 0)
+ {
+ if (!sizeonly)
+ _tarWriteHeader(pathbuf + basepathlen + 1, NULL, &statbuf);
+ size += 512; /* Size of the header just added */
+ continue;
+ }
+
+ /*
* We can skip pg_xlog, the WAL segments need to be fetched from the
* WAL archive anyway. But include it as an empty directory anyway, so
* we get permissions right.
--
Sent via pgsql-committers mailing list ([email protected])
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-committers