From e7873b74d9c1bb7a325960f52043db6de88e6e66 Mon Sep 17 00:00:00 2001 From: Heikki Linnakangas Date: Fri, 16 May 2014 10:10:45 +0300 Subject: [PATCH] Open output file before sleeping in pg_recvlogical. Let's complain about e.g an invalid path or permission problem sooner rather than later. Before this patch, we would only try to open the output file after receiving the first decoded message from the server. --- src/bin/pg_basebackup/pg_recvlogical.c | 34 +++++++++++++------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/src/bin/pg_basebackup/pg_recvlogical.c b/src/bin/pg_basebackup/pg_recvlogical.c index 9058c3daa7..a58530372e 100644 --- a/src/bin/pg_basebackup/pg_recvlogical.c +++ b/src/bin/pg_basebackup/pg_recvlogical.c @@ -315,6 +315,23 @@ StreamLog(void) } output_reopen = false; + /* open the output file, if not open yet */ + if (outfd == -1) + { + if (strcmp(outfile, "-") == 0) + outfd = fileno(stdout); + else + outfd = open(outfile, O_CREAT | O_APPEND | O_WRONLY | PG_BINARY, + S_IRUSR | S_IWUSR); + if (outfd == -1) + { + fprintf(stderr, + _("%s: could not open log file \"%s\": %s\n"), + progname, outfile, strerror(errno)); + goto error; + } + } + r = PQgetCopyData(conn, ©buf, 1); if (r == 0) { @@ -479,23 +496,6 @@ StreamLog(void) output_written_lsn = Max(temp, output_written_lsn); } - /* open the output file, if not open yet */ - if (outfd == -1) - { - if (strcmp(outfile, "-") == 0) - outfd = fileno(stdout); - else - outfd = open(outfile, O_CREAT | O_APPEND | O_WRONLY | PG_BINARY, - S_IRUSR | S_IWUSR); - if (outfd == -1) - { - fprintf(stderr, - _("%s: could not open log file \"%s\": %s\n"), - progname, outfile, strerror(errno)); - goto error; - } - } - bytes_left = r - hdr_len; bytes_written = 0; -- 2.40.0