v3-0001-Add-custom-PQsetNoticeProcessor-handlers-for-repl.patch

application/octet-stream

Filename: v3-0001-Add-custom-PQsetNoticeProcessor-handlers-for-repl.patch
Type: application/octet-stream
Part: 2
Message: Re: Log prefix missing for subscriber log messages received from publisher

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: format-patch
Series: patch v3-0001
Subject: Add custom PQsetNoticeProcessor handlers for replication connection
File+
src/backend/replication/libpqwalreceiver/libpqwalreceiver.c 20 0
From e5f553ad5787fb0a5f8783e18e3776740a08e8a0 Mon Sep 17 00:00:00 2001
From: Vignesh C <vignesh21@gmail.com>
Date: Wed, 16 Jul 2025 15:26:12 +0530
Subject: [PATCH v3 1/3] Add custom PQsetNoticeProcessor handlers for
 replication connection

This patch introduces a custom notice processor for libpq-based
connections in replication connection. The notice processor captures
messages and routes them through ereport(), making them visible in
local logs with a prefix making it easy for diagnosis.
---
 .../libpqwalreceiver/libpqwalreceiver.c       | 20 +++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c b/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c
index f7b5d093681..93b71805df4 100644
--- a/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c
+++ b/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c
@@ -127,6 +127,24 @@ _PG_init(void)
 	WalReceiverFunctions = &PQWalReceiverFunctions;
 }
 
+/*
+ * Custom notice processor for libpq connections used by replication.
+ */
+static void
+notice_processor(void *arg, const char *message)
+{
+	/* Trim trailing newline for cleaner logs */
+	size_t		len = strlen(message);
+
+	if (len > 0 && message[len - 1] == '\n')
+		ereport(LOG,
+				errmsg("received message via replication: %.*s",
+					   (int) (len - 1), message));
+	else
+		ereport(LOG,
+				errmsg("received message via replication: %s", message));
+}
+
 /*
  * Establish the connection to the primary server.
  *
@@ -232,6 +250,8 @@ libpqrcv_connect(const char *conninfo, bool replication, bool logical,
 				 errhint("Target server's authentication method must be changed, or set password_required=false in the subscription parameters.")));
 	}
 
+	PQsetNoticeProcessor(conn->streamConn, notice_processor, NULL);
+
 	/*
 	 * Set always-secure search path for the cases where the connection is
 	 * used to run SQL queries, so malicious users can't get control.
-- 
2.43.0