pgsql: Add --synchronous option to pg_receivexlog, for more reliable WA

From: Fujii Masao <fujii(at)postgresql(dot)org>
To: pgsql-committers(at)postgresql(dot)org
Subject: pgsql: Add --synchronous option to pg_receivexlog, for more reliable WA
Date: 2014-11-17 17:34:10
Message-ID: E1XqQBm-0007AJ-SU@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers pgsql-hackers

Add --synchronous option to pg_receivexlog, for more reliable WAL writing.

Previously pg_receivexlog flushed WAL data only when WAL file was switched.
Then 3dad73e added -F option to pg_receivexlog so that users could control
how frequently sync commands were issued to WAL files. It also allowed users
to make pg_receivexlog flush WAL data immediately after writing by
specifying 0 in -F option. However feedback messages were not sent back
immediately even after a flush location was updated. So even if WAL data
was flushed in real time, the server could not see that for a while.

This commit removes -F option from and adds --synchronous to pg_receivexlog.
If --synchronous is specified, like the standby's wal receiver, pg_receivexlog
flushes WAL data as soon as there is WAL data which has not been flushed yet.
Then it sends back the feedback message identifying the latest flush location
to the server. This option is useful to make pg_receivexlog behave as sync
standby by using replication slot, for example.

Original patch by Furuya Osamu, heavily rewritten by me.
Reviewed by Heikki Linnakangas, Alvaro Herrera and Sawada Masahiko.

Branch
------
master

Details
-------
http://git.postgresql.org/pg/commitdiff/c4f99d20294950576d552dcaf9ce5b9bdc4233a3

Modified Files
--------------
doc/src/sgml/ref/pg_receivexlog.sgml | 42 ++++++++++++-----------
src/bin/pg_basebackup/pg_basebackup.c | 2 +-
src/bin/pg_basebackup/pg_receivexlog.c | 23 +++++--------
src/bin/pg_basebackup/receivelog.c | 57 ++++++++++++--------------------
src/bin/pg_basebackup/receivelog.h | 2 +-
5 files changed, 54 insertions(+), 72 deletions(-)

Responses

Browse pgsql-committers by date

  From Date Subject
Next Message Tom Lane 2014-11-17 19:47:21 pgsql: Update 9.4 release notes for commits through today.
Previous Message Tom Lane 2014-11-17 17:09:30 pgsql: Update time zone data files to tzdata release 2014j.

Browse pgsql-hackers by date

  From Date Subject
Next Message Fujii Masao 2014-11-17 17:36:24 Re: pg_receivexlog --status-interval add fsync feedback
Previous Message Robert Haas 2014-11-17 17:28:18 Re: PgBench's \setrandom could be better