diff options
author | Robert Haas <rhaas@postgresql.org> | 2017-10-29 12:46:55 +0530 |
---|---|---|
committer | Robert Haas <rhaas@postgresql.org> | 2017-10-29 12:46:55 +0530 |
commit | 5f3971291fc231bb65a38198b1bcb1c29ef63108 (patch) | |
tree | 08afdf3539055189d06d39ee108ff23a3d5b6bf6 /src | |
parent | b7f3eb31405f1dbbf086e5a8f88569a6dc85157a (diff) | |
download | postgresql-5f3971291fc231bb65a38198b1bcb1c29ef63108.tar.gz postgresql-5f3971291fc231bb65a38198b1bcb1c29ef63108.zip |
pg_receivewal: Add --no-sync option.
Michael Paquier, reviewed by Kuntal Ghosh and by me. I did a little
wordsmithing on the documentation, too.
Discussion: http://postgr.es/m/CAB7nPqTuXuyEoVKcWcExh_b0uAjgWd_14KfGLrCTccBZ=VA0KA@mail.gmail.com
Diffstat (limited to 'src')
-rw-r--r-- | src/bin/pg_basebackup/pg_receivewal.c | 16 | ||||
-rw-r--r-- | src/bin/pg_basebackup/t/020_pg_receivewal.pl | 5 |
2 files changed, 19 insertions, 2 deletions
diff --git a/src/bin/pg_basebackup/pg_receivewal.c b/src/bin/pg_basebackup/pg_receivewal.c index 888ae6c5719..d801ea07fc8 100644 --- a/src/bin/pg_basebackup/pg_receivewal.c +++ b/src/bin/pg_basebackup/pg_receivewal.c @@ -40,6 +40,7 @@ static volatile bool time_to_stop = false; static bool do_create_slot = false; static bool slot_exists_ok = false; static bool do_drop_slot = false; +static bool do_sync = true; static bool synchronous = false; static char *replication_slot = NULL; static XLogRecPtr endpos = InvalidXLogRecPtr; @@ -81,6 +82,7 @@ usage(void) printf(_(" -E, --endpos=LSN exit after receiving the specified LSN\n")); printf(_(" --if-not-exists do not error if slot already exists when creating a slot\n")); printf(_(" -n, --no-loop do not loop on connection lost\n")); + printf(_(" --no-sync do not wait for changes to be written safely to disk\n")); printf(_(" -s, --status-interval=SECS\n" " time between status packets sent to server (default: %d)\n"), (standby_message_timeout / 1000)); printf(_(" -S, --slot=SLOTNAME replication slot to use\n")); @@ -425,7 +427,7 @@ StreamLog(void) stream.stop_socket = PGINVALID_SOCKET; stream.standby_message_timeout = standby_message_timeout; stream.synchronous = synchronous; - stream.do_sync = true; + stream.do_sync = do_sync; stream.mark_done = false; stream.walmethod = CreateWalDirectoryMethod(basedir, compresslevel, stream.do_sync); @@ -487,6 +489,7 @@ main(int argc, char **argv) {"drop-slot", no_argument, NULL, 2}, {"if-not-exists", no_argument, NULL, 3}, {"synchronous", no_argument, NULL, 4}, + {"no-sync", no_argument, NULL, 5}, {NULL, 0, NULL, 0} }; @@ -595,6 +598,9 @@ main(int argc, char **argv) case 4: synchronous = true; break; + case 5: + do_sync = false; + break; default: /* @@ -637,6 +643,14 @@ main(int argc, char **argv) exit(1); } + if (synchronous && !do_sync) + { + fprintf(stderr, _("%s: cannot use --synchronous together with --no-sync\n"), progname); + fprintf(stderr, _("Try \"%s --help\" for more information.\n"), + progname); + exit(1); + } + /* * Required arguments */ diff --git a/src/bin/pg_basebackup/t/020_pg_receivewal.pl b/src/bin/pg_basebackup/t/020_pg_receivewal.pl index f9f7bf75abd..64e3a35a87b 100644 --- a/src/bin/pg_basebackup/t/020_pg_receivewal.pl +++ b/src/bin/pg_basebackup/t/020_pg_receivewal.pl @@ -2,7 +2,7 @@ use strict; use warnings; use TestLib; use PostgresNode; -use Test::More tests => 17; +use Test::More tests => 18; program_help_ok('pg_receivewal'); program_version_ok('pg_receivewal'); @@ -24,6 +24,9 @@ $primary->command_fails( $primary->command_fails( [ 'pg_receivewal', '-D', $stream_dir, '--create-slot' ], 'failure if --create-slot specified without --slot'); +$primary->command_fails( + [ 'pg_receivewal', '-D', $stream_dir, '--synchronous', '--no-sync' ], + 'failure if --synchronous specified with --no-sync'); # Slot creation and drop my $slot_name = 'test'; |