Re: Streaming replication and WAL archive interactions

Heikki Linnakangas <hlinnaka@iki.fi>

From: Heikki Linnakangas <hlinnaka@iki.fi>
To:
Cc: Michael Paquier <michael.paquier@gmail.com>, Venkata Balaji N <nag1010@gmail.com>, Andres Freund <andres@anarazel.de>, Fujii Masao <masao.fujii@gmail.com>, Borodin Vladimir <root@simply.name>, PostgreSQL-development <pgsql-hackers@postgresql.org>
Date: 2015-05-13T17:23:59Z
Lists: pgsql-hackers

Attachments

On 05/13/2015 04:29 PM, Robert Haas wrote:
> On Wed, May 13, 2015 at 8:53 AM, Heikki Linnakangas <hlinnaka@iki.fi> wrote:
>> Our manual says that archive_command should refuse to overwrite an existing
>> file. But to work-around the double-archival problem, where the same file is
>> archived twice, it would be even better if it would simply return success if
>> the file exists, *and has identical contents*. I don't know how to code that
>> logic in a simple one-liner though.
>
> This is why we really, really need that pg_copy command that was
> proposed a while back.

Yeah..

I took a step back and looked at the big picture again:

If we just implement the "always" mode, and you have a pg_copy command 
or similar that handles duplicates correctly, you don't necessarily need 
the "shared" mode at all. You can just set archive_command='always', and 
have the master and standby archive to the same location. As long as the 
archive_command works correctly and is race-free, that should work.

I cut back the patch to implement just the "always" mode. The "shared" 
mode might still make sense as a future patch, as I think it's easier to 
understand and has less strict requirements for the archive_command, but 
let's take one step at a time.

So attached is a patch that just adds the "always" mode. This is pretty 
close to what Fujii submitted long ago.

- Heikki