From d226e236c6ccdd27f1fd42aaab070762d1b70275 Mon Sep 17 00:00:00 2001 From: Bruce Momjian Date: Thu, 24 May 2012 20:30:39 -0400 Subject: [PATCH] On Windows, have pg_upgrade use different two files to log pg_ctl start/stop output, to fix file share error reported by Edmund Horner --- contrib/pg_upgrade/pg_upgrade.c | 4 ++-- contrib/pg_upgrade/pg_upgrade.h | 10 ++++++---- contrib/pg_upgrade/server.c | 14 +++++++------- 3 files changed, 15 insertions(+), 13 deletions(-) diff --git a/contrib/pg_upgrade/pg_upgrade.c b/contrib/pg_upgrade/pg_upgrade.c index 7297efd124..3df383614e 100644 --- a/contrib/pg_upgrade/pg_upgrade.c +++ b/contrib/pg_upgrade/pg_upgrade.c @@ -58,8 +58,8 @@ OSInfo os_info; char *output_files[] = { SERVER_LOG_FILE, #ifdef WIN32 - /* file is unique on Win32 */ - SERVER_LOG_FILE2, + SERVER_START_LOG_FILE, + SERVER_STOP_LOG_FILE, #endif RESTORE_LOG_FILE, UTILITY_LOG_FILE, diff --git a/contrib/pg_upgrade/pg_upgrade.h b/contrib/pg_upgrade/pg_upgrade.h index 0d6269a850..5891997e79 100644 --- a/contrib/pg_upgrade/pg_upgrade.h +++ b/contrib/pg_upgrade/pg_upgrade.h @@ -50,8 +50,8 @@ extern char *output_files[]; * because it is being used by another process." so send the pg_ctl * command-line output to a new file, rather than into the server log file. * Ideally we could use UTILITY_LOG_FILE for this, but some Windows platforms - * keep the pg_ctl output file open even after pg_ctl exits, perhaps by the - * running postmaster. + * keep the pg_ctl output file open by the running postmaster, even after + * pg_ctl exits. * * We could use the Windows pgwin32_open() flags to allow shared file * writes but is unclear how all other tools would use those flags, so @@ -59,9 +59,11 @@ extern char *output_files[]; * the error message appropriately. */ #ifndef WIN32 -#define SERVER_LOG_FILE2 SERVER_LOG_FILE +#define SERVER_START_LOG_FILE SERVER_LOG_FILE +#define SERVER_STOP_LOG_FILE SERVER_LOG_FILE #else -#define SERVER_LOG_FILE2 "pg_upgrade_server2.log" +#define SERVER_START_LOG_FILE "pg_upgrade_server_start.log" +#define SERVER_STOP_LOG_FILE "pg_upgrade_server_stop.log" #endif diff --git a/contrib/pg_upgrade/server.c b/contrib/pg_upgrade/server.c index b515e0504c..f557453df2 100644 --- a/contrib/pg_upgrade/server.c +++ b/contrib/pg_upgrade/server.c @@ -165,7 +165,7 @@ start_postmaster(ClusterInfo *cluster) (cluster->controldata.cat_ver >= BINARY_UPGRADE_SERVER_FLAG_CAT_VER) ? "-b" : "-c autovacuum=off -c autovacuum_freeze_max_age=2000000000", - cluster->pgopts ? cluster->pgopts : "", SERVER_LOG_FILE2); + cluster->pgopts ? cluster->pgopts : "", SERVER_START_LOG_FILE); /* * Don't throw an error right away, let connecting throw the error because @@ -173,9 +173,9 @@ start_postmaster(ClusterInfo *cluster) */ pg_ctl_return = exec_prog(false, true, /* pass both file names if the differ */ - (strcmp(SERVER_LOG_FILE, SERVER_LOG_FILE2) == 0) ? + (strcmp(SERVER_LOG_FILE, SERVER_START_LOG_FILE) == 0) ? SERVER_LOG_FILE : - SERVER_LOG_FILE " or " SERVER_LOG_FILE2, + SERVER_LOG_FILE " or " SERVER_START_LOG_FILE, "%s", cmd); /* Check to see if we can connect to the server; if not, report it. */ @@ -214,13 +214,13 @@ stop_postmaster(bool fast) return; /* no cluster running */ snprintf(cmd, sizeof(cmd), - SYSTEMQUOTE "\"%s/pg_ctl\" -w -l \"%s\" -D \"%s\" -o \"%s\" " + SYSTEMQUOTE "\"%s/pg_ctl\" -w -D \"%s\" -o \"%s\" " "%s stop >> \"%s\" 2>&1" SYSTEMQUOTE, - cluster->bindir, SERVER_LOG_FILE2, cluster->pgconfig, + cluster->bindir, cluster->pgconfig, cluster->pgopts ? cluster->pgopts : "", - fast ? "-m fast" : "", SERVER_LOG_FILE2); + fast ? "-m fast" : "", SERVER_STOP_LOG_FILE); - exec_prog(fast ? false : true, true, SERVER_LOG_FILE2, "%s", cmd); + exec_prog(fast ? false : true, true, SERVER_STOP_LOG_FILE, "%s", cmd); os_info.running_cluster = NULL; } -- 2.40.0