diff --git a/contrib/pg_upgrade/controldata.c b/contrib/pg_upgrade/controldata.c index cfc9d0969a6..52fba620a9c 100644 --- a/contrib/pg_upgrade/controldata.c +++ b/contrib/pg_upgrade/controldata.c @@ -148,8 +148,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");