From 0c1669c806bda3d42bef1cd6972ab8e2bf64f862 Mon Sep 17 00:00:00 2001
From: Tom Lane <tgl@sss.pgh.pa.us>
Date: Sat, 10 Nov 2001 23:06:12 +0000
Subject: [PATCH] Restructure child-exit logging messages for easier
 translation, per suggestion from Peter.

---
 src/backend/postmaster/postmaster.c | 56 ++++++++++++-----------------
 1 file changed, 22 insertions(+), 34 deletions(-)

diff --git a/src/backend/postmaster/postmaster.c b/src/backend/postmaster/postmaster.c
index 2622ee08215..67f066515b4 100644
--- a/src/backend/postmaster/postmaster.c
+++ b/src/backend/postmaster/postmaster.c
@@ -37,7 +37,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/postmaster/postmaster.c,v 1.258 2001/11/06 18:02:48 tgl Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/postmaster/postmaster.c,v 1.259 2001/11/10 23:06:12 tgl Exp $
  *
  * NOTES
  *
@@ -240,7 +240,7 @@ static void reaper(SIGNAL_ARGS);
 static void sigusr1_handler(SIGNAL_ARGS);
 static void dummy_handler(SIGNAL_ARGS);
 static void CleanupProc(int pid, int exitstatus);
-static const char *formatExitStatus(int exitstatus);
+static void LogChildExit(const char *procname, int pid, int exitstatus);
 static int	DoBackend(Port *port);
 static void ExitPostmaster(int status);
 static void usage(const char *);
@@ -1544,8 +1544,8 @@ reaper(SIGNAL_ARGS)
 		 */
 		if (pgstat_ispgstat(pid))
 		{
-			elog(DEBUG, "statistics collector process (pid %d) %s",
-				 pid, formatExitStatus(exitstatus));
+			LogChildExit(gettext("statistics collector process"),
+						 pid, exitstatus);
 			pgstat_start();
 			continue;
 		}
@@ -1557,8 +1557,8 @@ reaper(SIGNAL_ARGS)
 		{
 			if (exitstatus != 0)
 			{
-				elog(DEBUG, "shutdown process (pid %d) %s",
-					 pid, formatExitStatus(exitstatus));
+				LogChildExit(gettext("shutdown process"),
+							 pid, exitstatus);
 				ExitPostmaster(1);
 			}
 			ExitPostmaster(0);
@@ -1568,8 +1568,9 @@ reaper(SIGNAL_ARGS)
 		{
 			if (exitstatus != 0)
 			{
-				elog(DEBUG, "startup process (pid %d) %s; aborting startup",
-					 pid, formatExitStatus(exitstatus));
+				LogChildExit(gettext("startup process"),
+							 pid, exitstatus);
+				elog(DEBUG, "aborting startup due to startup process failure");
 				ExitPostmaster(1);
 			}
 			StartupPID = 0;
@@ -1639,8 +1640,6 @@ reaper_done:
  * CleanupProc -- cleanup after terminated backend.
  *
  * Remove all local state associated with backend.
- *
- * Dillon's note: should log child's exit status in the system log.
  */
 static void
 CleanupProc(int pid,
@@ -1651,8 +1650,7 @@ CleanupProc(int pid,
 	Backend    *bp;
 
 	if (DebugLvl)
-		elog(DEBUG, "CleanupProc: child process (pid %d) %s",
-			 pid, formatExitStatus(exitstatus));
+		LogChildExit(gettext("child process"), pid, exitstatus);
 
 	/*
 	 * If a backend dies in an ugly way (i.e. exit status not 0) then we
@@ -1697,8 +1695,7 @@ CleanupProc(int pid,
 	/* Make log entry unless we did so already */
 	if (!FatalError)
 	{
-		elog(DEBUG, "server process (pid %d) %s",
-			 pid, formatExitStatus(exitstatus));
+		LogChildExit(gettext("server process"), pid, exitstatus);
 		elog(DEBUG, "terminating any other active server processes");
 	}
 
@@ -1756,33 +1753,24 @@ CleanupProc(int pid,
 }
 
 /*
- * Convert a wait(2) exit status into a printable string.
- *
- * For present uses, it's okay to use a static return area here.
+ * Log the death of a child process.
  */
-static const char *
-formatExitStatus(int exitstatus)
+static void
+LogChildExit(const char *procname, int pid, int exitstatus)
 {
-	static char result[100];
-
 	/*
-	 * translator: these strings provide the verb phrase in the preceding
-	 * messages such as "server process (pid %d) %s"
+	 * translator: the first %s in these messages is a noun phrase
+	 * describing a child process, such as "server process"
 	 */
 	if (WIFEXITED(exitstatus))
-		snprintf(result, sizeof(result),
-				 gettext("exited with exit code %d"),
-				 WEXITSTATUS(exitstatus));
+		elog(DEBUG, "%s (pid %d) exited with exit code %d",
+			 procname, pid, WEXITSTATUS(exitstatus));
 	else if (WIFSIGNALED(exitstatus))
-		snprintf(result, sizeof(result),
-				 gettext("was terminated by signal %d"),
-				 WTERMSIG(exitstatus));
+		elog(DEBUG, "%s (pid %d) was terminated by signal %d",
+			 procname, pid, WTERMSIG(exitstatus));
 	else
-		snprintf(result, sizeof(result),
-				 gettext("exited with unexpected status %d"),
-				 exitstatus);
-
-	return result;
+		elog(DEBUG, "%s (pid %d) exited with unexpected status %d",
+			 procname, pid, exitstatus);
 }
 
 /*
-- 
GitLab