Hi, Am Sonntag, den 26.02.2017, 22:25 +0530 schrieb Robert Haas: > On Tue, Feb 21, 2017 at 3:47 PM, Michael Banck > <michael.ba...@credativ.de> wrote: > > So I am proposing the attached patch, which sends the base tablespace > > first, and then all the other external tablespaces afterwards, thus > > having base_backup be the first file in the tar in all cases. Does > > anybody see a problem with that? > > Please add this to commitfest.postgresql.org so it doesn't get forgotten.
Right, I was going to do that and have done so now, thanks for the reminder. Also, attached is a slightly changed patch which expands on the reason of the change in the comment. Michael -- Michael Banck Projektleiter / Senior Berater Tel.: +49 2166 9901-171 Fax: +49 2166 9901-100 Email: michael.ba...@credativ.de credativ GmbH, HRB Mönchengladbach 12080 USt-ID-Nummer: DE204566209 Trompeterallee 108, 41189 Mönchengladbach Geschäftsführung: Dr. Michael Meskes, Jörg Folz, Sascha Heuer
From 9829ad0da1950b0c928c8b2adfc93a98271930d1 Mon Sep 17 00:00:00 2001 From: Michael Banck <michael.ba...@credativ.de> Date: Sun, 26 Feb 2017 17:59:38 +0100 Subject: [PATCH] Reorder tablespaces for streaming basebackups. The replication protocol documentation appears to express that the main tablespace is th first to be sent, however, it is actually that last one. This makes the backup_label file (which gets prepended to the main tablespace) inconveniently end up in the middle of the basebackup stream if other tablespaces are present. Change this so that the main tablespace is the first to be sent, ensuring that backup_label is the first file in the stream. --- src/backend/replication/basebackup.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/backend/replication/basebackup.c b/src/backend/replication/basebackup.c index 09ecc15..b806205 100644 --- a/src/backend/replication/basebackup.c +++ b/src/backend/replication/basebackup.c @@ -230,10 +230,11 @@ perform_base_backup(basebackup_options *opt, DIR *tblspcdir) else statrelpath = pgstat_stat_directory; - /* Add a node for the base directory at the end */ + /* Add a node for the base directory at the beginning. This way, the + * backup_label file is always the first file to be sent. */ ti = palloc0(sizeof(tablespaceinfo)); ti->size = opt->progress ? sendDir(".", 1, true, tablespaces, true) : -1; - tablespaces = lappend(tablespaces, ti); + tablespaces = lcons(ti, tablespaces); /* Send tablespace header */ SendBackupHeader(tablespaces); -- 2.1.4
-- Sent via pgsql-hackers mailing list (firstname.lastname@example.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers