From 3993bd8e07a31dd3b4606a53cc02627da7ed769c Mon Sep 17 00:00:00 2001
From: Tom Lane <tgl@sss.pgh.pa.us>
Date: Tue, 30 May 2006 17:08:14 +0000
Subject: [PATCH] PostmasterIsAlive test really ought to be in the inner loop
 for safety.

---
 src/backend/postmaster/pgarch.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/src/backend/postmaster/pgarch.c b/src/backend/postmaster/pgarch.c
index 3b6cc9d5d97..9a8f24e5dbb 100644
--- a/src/backend/postmaster/pgarch.c
+++ b/src/backend/postmaster/pgarch.c
@@ -19,7 +19,7 @@
  *
  *
  * IDENTIFICATION
- *	  $PostgreSQL: pgsql/src/backend/postmaster/pgarch.c,v 1.21 2006/05/30 13:30:49 momjian Exp $
+ *	  $PostgreSQL: pgsql/src/backend/postmaster/pgarch.c,v 1.22 2006/05/30 17:08:14 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -352,12 +352,16 @@ pgarch_ArchiverCopyLoop(void)
 	 * some backend will add files onto the list of those that need archiving
 	 * while we are still copying earlier archives
 	 */
-	while (PostmasterIsAlive(true) && pgarch_readyXlog(xlog))
+	while (pgarch_readyXlog(xlog))
 	{
 		int			failures = 0;
 
 		for (;;)
 		{
+			/* Abandon processing if we notice our postmaster has died */
+			if (!PostmasterIsAlive(true))
+				return;
+
 			if (pgarch_archiveXlog(xlog))
 			{
 				/* successful */
-- 
GitLab