summaryrefslogtreecommitdiff
path: root/contrib
diff options
context:
space:
mode:
authorBruce Momjian <bruce@momjian.us>2017-06-20 13:20:02 -0400
committerBruce Momjian <bruce@momjian.us>2017-06-20 13:20:02 -0400
commita0e8548811f6a4a47fe747fea72edcc3c4bf3f27 (patch)
tree84c4f8cce30097d9e2cb19255927f233994683ed /contrib
parent20f67e7a29dcacd234a4deecd019a54083b8321a (diff)
downloadpostgresql-a0e8548811f6a4a47fe747fea72edcc3c4bf3f27.tar.gz
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
Diffstat (limited to 'contrib')
-rw-r--r--contrib/pg_upgrade/check.c19
-rw-r--r--contrib/pg_upgrade/pg_upgrade.c2
-rw-r--r--contrib/pg_upgrade/pg_upgrade.h2
3 files changed, 13 insertions, 10 deletions
diff --git a/contrib/pg_upgrade/check.c b/contrib/pg_upgrade/check.c
index 81cb660d69..4bded59f08 100644
--- a/contrib/pg_upgrade/check.c
+++ b/contrib/pg_upgrade/check.c
@@ -204,13 +204,19 @@ report_clusters_compatible(void)
void
-issue_warnings(char *sequence_script_file_name)
+issue_warnings_and_set_wal_level(char *sequence_script_file_name)
{
+ /*
+ * 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 with the proper wal_level.
+ */
+ start_postmaster(&new_cluster, true);
+
/* old = PG 8.3 warnings? */
if (GET_MAJOR_VERSION(old_cluster.major_version) <= 803)
{
- start_postmaster(&new_cluster, true);
-
/* restore proper sequence values using file created from old server */
if (sequence_script_file_name)
{
@@ -226,16 +232,13 @@ issue_warnings(char *sequence_script_file_name)
old_8_3_rebuild_tsvector_tables(&new_cluster, false);
old_8_3_invalidate_hash_gin_indexes(&new_cluster, false);
old_8_3_invalidate_bpchar_pattern_ops_indexes(&new_cluster, false);
- stop_postmaster(false);
}
/* 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);
- }
+
+ stop_postmaster(false);
}
diff --git a/contrib/pg_upgrade/pg_upgrade.c b/contrib/pg_upgrade/pg_upgrade.c
index b8450893d0..9fe2def887 100644
--- a/contrib/pg_upgrade/pg_upgrade.c
+++ b/contrib/pg_upgrade/pg_upgrade.c
@@ -167,7 +167,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(sequence_script_file_name);
+ issue_warnings_and_set_wal_level(sequence_script_file_name);
pg_log(PG_REPORT, "\nUpgrade Complete\n");
pg_log(PG_REPORT, "----------------\n");
diff --git a/contrib/pg_upgrade/pg_upgrade.h b/contrib/pg_upgrade/pg_upgrade.h
index b6b716ce31..057d03171d 100644
--- a/contrib/pg_upgrade/pg_upgrade.h
+++ b/contrib/pg_upgrade/pg_upgrade.h
@@ -323,7 +323,7 @@ void check_and_dump_old_cluster(bool live_check,
char **sequence_script_file_name);
void check_new_cluster(void);
void report_clusters_compatible(void);
-void issue_warnings(char *sequence_script_file_name);
+void issue_warnings_and_set_wal_level(char *sequence_script_file_name);
void output_completion_banner(char *analyze_script_file_name,
char *deletion_script_file_name);
void check_cluster_versions(void);