not_emit_pid_uid_to_client.diff

application/octet-stream

Filename: not_emit_pid_uid_to_client.diff
Type: application/octet-stream
Part: 0
Message: Re: Add errdetail() with PID and UID about source of termination signal

Patch

Same data as JSON: GET /api/v1/attachments/:id/patch the parsed metadata as JSON — format, series position, per-file stats; never the diff bytes. API reference →
Format: unified
File+
src/backend/replication/syncrep.c 4 3
src/backend/tcop/postgres.c 4 3
src/bin/psql/t/001_basic.pl 2 2
diff --git a/src/backend/replication/syncrep.c b/src/backend/replication/syncrep.c
index 73450fe437e..e0e30579c59 100644
--- a/src/backend/replication/syncrep.c
+++ b/src/backend/replication/syncrep.c
@@ -304,9 +304,10 @@ SyncRepWaitForLSN(XLogRecPtr lsn, bool commit)
 				ereport(WARNING,
 						(errcode(ERRCODE_ADMIN_SHUTDOWN),
 						 errmsg("canceling the wait for synchronous replication and terminating connection due to administrator command"),
-						 errdetail("The transaction has already committed locally, but might not have been replicated to the standby.  Signal sent by PID %d, UID %d.",
-								   (int) ProcDieSenderPid,
-								   (int) ProcDieSenderUid)));
+						 errdetail("The transaction has already committed locally, but might not have been replicated to the standby."),
+						 errdetail_log("The transaction has already committed locally, but might not have been replicated to the standby.  Signal sent by PID %d, UID %d.",
+									   (int) ProcDieSenderPid,
+									   (int) ProcDieSenderUid)));
 			else
 				ereport(WARNING,
 						(errcode(ERRCODE_ADMIN_SHUTDOWN),
diff --git a/src/backend/tcop/postgres.c b/src/backend/tcop/postgres.c
index 2c1f14b7889..dbef734a93f 100644
--- a/src/backend/tcop/postgres.c
+++ b/src/backend/tcop/postgres.c
@@ -111,12 +111,13 @@ int			client_connection_check_interval = 0;
 int			restrict_nonsystem_relation_kind;
 
 /*
- * Include signal sender PID/UID as errdetail when available (SA_SIGINFO).
- * The caller must supply the (already-captured) pid and uid values.
+ * Include signal sender PID/UID in the server log when available
+ * (SA_SIGINFO). The caller must supply the already-captured pid and uid
+ * values.
  */
 #define ERRDETAIL_SIGNAL_SENDER(pid, uid) \
 	((pid) == 0 ? 0 : \
-	 errdetail("Signal sent by PID %d, UID %d.", (int) (pid), (int) (uid)))
+	 errdetail_log("Signal sent by PID %d, UID %d.", (int) (pid), (int) (uid)))
 
 /* ----------------
  *		private typedefs etc
diff --git a/src/bin/psql/t/001_basic.pl b/src/bin/psql/t/001_basic.pl
index 7c21204c1f2..ed8c2e939b0 100644
--- a/src/bin/psql/t/001_basic.pl
+++ b/src/bin/psql/t/001_basic.pl
@@ -143,11 +143,11 @@ is($ret, 2, 'server crash: psql exit code');
 like($out, qr/before/, 'server crash: output before crash');
 unlike($out, qr/AFTER/, 'server crash: no output after crash');
 like( $err, qr/psql:<stdin>:2: FATAL:  terminating connection due to administrator command
-(?:DETAIL:  Signal sent by PID \d+, UID \d+\.\n)?psql:<stdin>:2: server closed the connection unexpectedly
+psql:<stdin>:2: server closed the connection unexpectedly
 	This probably means the server terminated abnormally
 	before or while processing the request.
 psql:<stdin>:2: error: connection to server was lost/,
-	'server crash: error message');
+		'server crash: error message');
 
 # test \errverbose
 #