From a7721e56d69d8de631a0d6689059097d17380304 Mon Sep 17 00:00:00 2001
From: Daniel Gustafsson <dgustafsson@postgresql.org>
Date: Wed, 19 Jul 2023 22:14:42 +0200
Subject: [PATCH v2] pg_upgrade: include additional detail in cluster check

If the cluster fails the pg_controldata check for clean shut down
we only reported that it did so, not why.  Fix by including the
state reported by pg_controldata in the error message to assist
the user in debugging the upgrade.

Discussion: https://postgr.es/m/E0D5EA16-A085-4753-8DDC-C7055048B439@yesql.se
---
 src/bin/pg_upgrade/controldata.c | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/src/bin/pg_upgrade/controldata.c b/src/bin/pg_upgrade/controldata.c
index 9071a6fd45..4beb65ab22 100644
--- a/src/bin/pg_upgrade/controldata.c
+++ b/src/bin/pg_upgrade/controldata.c
@@ -149,22 +149,23 @@ get_control_data(ClusterInfo *cluster, bool live_check)
 				 * the server was shut down cleanly, from the controldata
 				 * perspective.
 				 */
-				/* remove leading spaces */
+				/* Remove trailing newline and leading spaces */
+				(void) pg_strip_crlf(p);
 				while (*p == ' ')
 					p++;
-				if (strcmp(p, "shut down in recovery\n") == 0)
+				if (strcmp(p, "shut down in recovery") == 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.");
 					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.");
 				}
-				else if (strcmp(p, "shut down\n") != 0)
+				else if (strcmp(p, "shut down") != 0)
 				{
 					if (cluster == &old_cluster)
-						pg_fatal("The source cluster was not shut down cleanly.");
+						pg_fatal("The source cluster was not shut down cleanly, state reported as: \"%s\"", p);
 					else
-						pg_fatal("The target cluster was not shut down cleanly.");
+						pg_fatal("The target cluster was not shut down cleanly, state reported as: \"%s\"", p);
 				}
 				got_cluster_state = true;
 			}
-- 
2.32.1 (Apple Git-133)

