Re: BUG #15402: Hot standby server with archive_mode=on keeps initial WAL segments

TAKATSUKA Haruka <harukat@sraoss.co.jp>

From: TAKATSUKA Haruka <harukat@sraoss.co.jp>
To: Michael Paquier <michael@paquier.xyz>
Cc: pgsql-bugs@lists.postgresql.org
Date: 2018-09-26T04:36:40Z
Lists: pgsql-bugs
Hello Michael,

Firstly, I will tell the reproduce steps.

On Wed, 26 Sep 2018 12:52:05 +0900
Michael Paquier <michael@paquier.xyz> wrote:

> On Wed, Sep 26, 2018 at 03:26:50AM +0000, PG Bug reporting form wrote:
> > A hot standby server with “archive_mode = on” keeps initial WAL segment
> > files that copied by pg_basebackup. It shows the following status.
> > 000000010000000000000042 will be kept forever in this case.
> 
> How did you find yourself in this situation?  Did you take a base backup
> from a primary which had .ready files in it, and those got copied to the
> standby's data folder?  We may want to study the possibility of
> filtering things when taking a base backup instead.

I can reproduce it by this steps.

  $ pg_basebackup -D data_standby -R -Xs
  $ pg_ctl start -D data_standby -o '-p 5433'
  $ pgbench -i ; pgbench -i ; pgbench -i 
  $ psql -c 'checkpoint' ; psql -p 5433 -c 'checkpoint'
  $ ls data_standby/pg_wal ; ls data_standby/pg_wal/archive_status/

  postgresql.conf:
    archive_mode = on
    archive_command = 'cp %p /tmp/arc/%f'
    max_wal_size = 160MB

There are no .ready files right after pg_basebackup.
It will be generated after the replication starts.

Thnaks,
Haruka Takatsuka


> > Though I understand renaming the .ready to .done manually can clean it,
> > I would like to fix the server code like the following patch.
> > I'd appreciate if you would consider that.
> 
> Your patch looks incorrect to me to begin with...  What if archive_mode
> is switched from "on" to "always" back-and-forth and there some of the
> past segments which should be archived are not?
> --
> Michael



Commits

Same data as JSON: GET /api/v1/messages/:b64id/commits the thread's linked commits as JSON, with link sources. API reference →
  1. Fix WAL recycling on standbys depending on archive_mode