postgres.git / summary / log / commit / refs
commit b710248dd3f90c46bd4208e6bf1290048b9d76cd
Author: Bruce Momjian <bruce@momjian.us>
Date: Tue Jun 20 17:20:02 2017 +0000
pg_upgrade: start/stop new server after pg_resetwal
When commit 0f33a719fdbb5d8c43839ea0d2c90cd03e2af2d2 removed the
instructions to start/stop the new cluster before running rsync, it was
now possible for pg_resetwal/pg_resetxlog to leave the final WAL record
at wal_level=minimum, preventing upgraded standby servers from
reconnecting.
This patch fixes that by having pg_upgrade unconditionally start/stop
the new cluster after pg_resetwal/pg_resetxlog has run.
Backpatch through 9.2 since, though the instructions were added in PG
9.5, they worked all the way back to 9.2.
Discussion: https://postgr.es/m/20170620171844.GC24975@momjian.us
Backpatch-through: 9.2
src/bin/pg_upgrade/check.c | 20 +++++++++++---------
src/bin/pg_upgrade/pg_upgrade.c | 2 +-
src/bin/pg_upgrade/pg_upgrade.h | 2 +-
3 files changed, 13 insertions(+), 11 deletions(-)
diff --git a/src/bin/pg_upgrade/check.c b/src/bin/pg_upgrade/check.c
index 8b9e81eb407..b79e54a2dc7 100644
--- a/src/bin/pg_upgrade/check.c
+++ b/src/bin/pg_upgrade/check.c
@@ -174,23 +174,25 @@ report_clusters_compatible(void)
void
-issue_warnings(void)
+issue_warnings_and_set_wal_level(void)
{
+ /*
+ * We unconditionally start/stop the new server because pg_resetwal -o
+ * set wal_level to 'minimum'. If the user is upgrading standby
+ * servers using the rsync instructions, they will need pg_upgrade
+ * to write its final WAL record showing wal_level as 'replica'.
+ */
+ start_postmaster(&new_cluster, true);
+
/* Create dummy large object permissions for old < PG 9.0? */
if (GET_MAJOR_VERSION(old_cluster.major_version) <= 804)
- {
- start_postmaster(&new_cluster, true);
new_9_0_populate_pg_largeobject_metadata(&new_cluster, false);
- stop_postmaster(false);
- }
/* Reindex hash indexes for old < 10.0 */
if (GET_MAJOR_VERSION(old_cluster.major_version) <= 906)
- {
- start_postmaster(&new_cluster, true);
old_9_6_invalidate_hash_indexes(&new_cluster, false);
- stop_postmaster(false);
- }
+
+ stop_postmaster(false);
}
diff --git a/src/bin/pg_upgrade/pg_upgrade.c b/src/bin/pg_upgrade/pg_upgrade.c
index ca1aa5cbb80..2a9c397277c 100644
--- a/src/bin/pg_upgrade/pg_upgrade.c
+++ b/src/bin/pg_upgrade/pg_upgrade.c
@@ -162,7 +162,7 @@ main(int argc, char **argv)
create_script_for_cluster_analyze(&analyze_script_file_name);
create_script_for_old_cluster_deletion(&deletion_script_file_name);
- issue_warnings();
+ issue_warnings_and_set_wal_level();
pg_log(PG_REPORT, "\nUpgrade Complete\n");
pg_log(PG_REPORT, "----------------\n");
diff --git a/src/bin/pg_upgrade/pg_upgrade.h b/src/bin/pg_upgrade/pg_upgrade.h
index 8fbf8acd7eb..e3a577a7823 100644
--- a/src/bin/pg_upgrade/pg_upgrade.h
+++ b/src/bin/pg_upgrade/pg_upgrade.h
@@ -332,7 +332,7 @@ void output_check_banner(bool live_check);
void check_and_dump_old_cluster(bool live_check);
void check_new_cluster(void);
void report_clusters_compatible(void);
-void issue_warnings(void);
+void issue_warnings_and_set_wal_level(void);
void output_completion_banner(char *analyze_script_file_name,
char *deletion_script_file_name);
void check_cluster_versions(void);
[parent: a69dfe5f40f7]