]> granicus.if.org Git - postgresql/commitdiff
pg_upgrade: issue helpful error message for use on standbys
authorBruce Momjian <bruce@momjian.us>
Fri, 17 Aug 2018 14:25:48 +0000 (10:25 -0400)
committerBruce Momjian <bruce@momjian.us>
Fri, 17 Aug 2018 14:25:48 +0000 (10:25 -0400)
Commit 777e6ddf1723306bd2bf8fe6f804863f459b0323 checked for a shut down
message from a standby and allowed it to continue.  This patch reports a
helpful error message in these cases, suggesting to use rsync as
documented.

Diagnosed-by: Martín Marqués
Discussion: https://postgr.es/m/CAPdiE1xYCow-reLjrhJ9DqrMu-ppNq0ChUUEvVdxhdjGRD5_eA@mail.gmail.com

Backpatch-through: 9.3

src/bin/pg_upgrade/controldata.c

index 6d1a3dfd570c3db656445ee83eb799fb7c355b3a..2f7ba40dc9834d47c8913b17f6fe7a60f328e4f2 100644 (file)
@@ -149,8 +149,14 @@ get_control_data(ClusterInfo *cluster, bool live_check)
                                /* remove leading spaces */
                                while (*p == ' ')
                                        p++;
-                               if (strcmp(p, "shut down\n") != 0 &&
-                                       strcmp(p, "shut down in recovery\n") != 0)
+                               if (strcmp(p, "shut down in recovery\n") == 0)
+                               {
+                                       if (cluster == &old_cluster)
+                                               pg_fatal("The source cluster was shut down while in recovery mode.  To upgrade, use \"rsync\" as documented or shut it down as a primary.\n");
+                                       else
+                                               pg_fatal("The target cluster was shut down while in recovery mode.  To upgrade, use \"rsync\" as documented or shut it down as a primary.\n");
+                               }
+                               else if (strcmp(p, "shut down\n") != 0)
                                {
                                        if (cluster == &old_cluster)
                                                pg_fatal("The source cluster was not shut down cleanly.\n");