public inbox for [email protected]
help / color / mirror / Atom feedFrom: Fujii Masao <[email protected]>
To: Amit Kapila <[email protected]>
Cc: Robert Haas <[email protected]>
Cc: PostgreSQL Hackers <[email protected]>
Subject: Re: pgsql: Reduce log level of some logical decoding messages from LOG to D
Date: Tue, 7 Apr 2026 15:08:51 +0900
Message-ID: <CAHGQGwFXUcasXgcCKs18YVr8ZF8YyOcggcwvUm7h-J7KWgcwPQ@mail.gmail.com> (raw)
In-Reply-To: <CAHGQGwGdfn4UPF8TmDPF5CinbrtxyUCHyny_ZuXHwXgSPyb2-w@mail.gmail.com>
References: <[email protected]>
<CA+TgmoYsu2+YAo9eLGkDp5VP-pfQ-jOoX382vS4THKHeRTNgew@mail.gmail.com>
<CAHGQGwEhtaT6qe5fN--t6HhTwBvBoZUukx-NVPpEMG9uFWHHvw@mail.gmail.com>
<CA+TgmoYwebE37qZwcNE9MKT4rt3ymP2s1M6KyRK_MGkxCYZMeg@mail.gmail.com>
<CAHGQGwFARNb_2J1Skvw5RQSsyhqUqWQgQJNDhP+v-7fzinLfOw@mail.gmail.com>
<CA+TgmoZ2+HQess2QSuZp1si17CDHw165PQROaFq0skcKJS20-g@mail.gmail.com>
<CAHGQGwFf+cpgw3T=NsGF8cxm4zx74AMCdajDda2Z7OXq9YM1mQ@mail.gmail.com>
<CAA4eK1+VwGQb5T7xH5AXS0XknGGCAVZQLbBcjq9DZikJhViX2g@mail.gmail.com>
<CAA4eK1+4wS-XY6qbhEyiF97Wc_o_t==5uzkZmZ3nKVDhpQpdOg@mail.gmail.com>
<CAHGQGwGdfn4UPF8TmDPF5CinbrtxyUCHyny_ZuXHwXgSPyb2-w@mail.gmail.com>
On Tue, Apr 7, 2026 at 12:54 PM Fujii Masao <[email protected]> wrote:
>
> On Tue, Apr 7, 2026 at 12:33 PM Amit Kapila <[email protected]> wrote:
> > The other possibility is to use AmRegularBackendProcess() to decide
> > the log_level in this case.
>
> Yes, that makes sense.
I've updated the patch to use AmRegularBackendProcess(). Patch attached.
Regards,
--
Fujii Masao
Attachments:
[application/octet-stream] v2-0001-Adjust-log-level-of-logical-decoding-messages-by-.patch (4.9K, 2-v2-0001-Adjust-log-level-of-logical-decoding-messages-by-.patch)
download | inline diff:
From 9e0b40be4871cba8f3cdf1bd4d7ac520d880d59f Mon Sep 17 00:00:00 2001
From: Fujii Masao <[email protected]>
Date: Tue, 7 Apr 2026 14:45:08 +0900
Subject: [PATCH v2] Adjust log level of logical decoding messages by context
Commit 21b018e7eab lowered some logical decoding messages from LOG to DEBUG1.
However, per discussion on pgsql-hackers, messages from background activity
(e.g., walsender or slotsync worker) should remain at LOG, as they are less
frequent and more likely to indicate issues that DBAs should notice.
For foreground SQL functions (e.g., pg_logical_slot_peek_binary_changes()),
keep these messages at DEBUG1 to avoid excessive log noise. They can still be
enabled by lowering client_min_messages or log_min_messages for the session.
This commit updates logical decoding to log these messages at LOG for
background activity and at DEBUG1 for foreground execution.
---
src/backend/replication/logical/logical.c | 2 +-
src/backend/replication/logical/snapbuild.c | 6 +++---
src/include/replication/logical.h | 21 +++++++++++++++++++
.../t/038_save_logical_slots_shutdown.pl | 1 -
4 files changed, 25 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/logical.c b/src/backend/replication/logical/logical.c
index f20d0c542f3..5c92fba2f53 100644
--- a/src/backend/replication/logical/logical.c
+++ b/src/backend/replication/logical/logical.c
@@ -598,7 +598,7 @@ CreateDecodingContext(XLogRecPtr start_lsn,
ctx->reorder->output_rewrites = ctx->options.receive_rewrites;
- ereport(DEBUG1,
+ ereport(LogicalDecodingLogLevel(),
(errmsg("starting logical decoding for slot \"%s\"",
NameStr(slot->data.name)),
errdetail("Streaming transactions committing after %X/%08X, reading WAL from %X/%08X.",
diff --git a/src/backend/replication/logical/snapbuild.c b/src/backend/replication/logical/snapbuild.c
index b4269a3b102..192b1560369 100644
--- a/src/backend/replication/logical/snapbuild.c
+++ b/src/backend/replication/logical/snapbuild.c
@@ -1312,7 +1312,7 @@ SnapBuildFindSnapshot(SnapBuild *builder, XLogRecPtr lsn, xl_running_xacts *runn
builder->state = SNAPBUILD_CONSISTENT;
builder->next_phase_at = InvalidTransactionId;
- ereport(DEBUG1,
+ ereport(LogicalDecodingLogLevel(),
errmsg("logical decoding found consistent point at %X/%08X",
LSN_FORMAT_ARGS(lsn)),
errdetail("There are no running transactions."));
@@ -1409,7 +1409,7 @@ SnapBuildFindSnapshot(SnapBuild *builder, XLogRecPtr lsn, xl_running_xacts *runn
builder->state = SNAPBUILD_CONSISTENT;
builder->next_phase_at = InvalidTransactionId;
- ereport(DEBUG1,
+ ereport(LogicalDecodingLogLevel(),
errmsg("logical decoding found consistent point at %X/%08X",
LSN_FORMAT_ARGS(lsn)),
errdetail("There are no old transactions anymore."));
@@ -1915,7 +1915,7 @@ SnapBuildRestore(SnapBuild *builder, XLogRecPtr lsn)
Assert(builder->state == SNAPBUILD_CONSISTENT);
- ereport(DEBUG1,
+ ereport(LogicalDecodingLogLevel(),
errmsg("logical decoding found consistent point at %X/%08X",
LSN_FORMAT_ARGS(lsn)),
errdetail("Logical decoding will begin using saved snapshot."));
diff --git a/src/include/replication/logical.h b/src/include/replication/logical.h
index bc9d4ece672..4e6cf3896f6 100644
--- a/src/include/replication/logical.h
+++ b/src/include/replication/logical.h
@@ -153,4 +153,25 @@ extern XLogRecPtr LogicalReplicationSlotCheckPendingWal(XLogRecPtr end_of_wal,
extern XLogRecPtr LogicalSlotAdvanceAndCheckSnapState(XLogRecPtr moveto,
bool *found_consistent_snapshot);
+
+/*
+ * This macro determines the log level for messages about starting logical
+ * decoding and finding a consistent point.
+ *
+ * When logical decoding is triggered by a foreground SQL function (e.g.,
+ * pg_logical_slot_peek_binary_changes()), these messages are logged at DEBUG1
+ * to avoid excessive log noise. This is acceptable since such issues are
+ * typically less critical, and the messages can still be enabled by lowering
+ * client_min_messages or log_min_messages for the session.
+ *
+ * When the messages originate from background activity (e.g., walsender or
+ * slotsync worker), they are logged at LOG, as these events are less frequent
+ * and more likely to indicate issues that DBAs should notice by default.
+ *
+ * Note that SQL functions executed by the logical walsender are treated as
+ * background activity.
+ */
+#define LogicalDecodingLogLevel() \
+ (AmRegularBackendProcess() ? DEBUG1 : LOG)
+
#endif
diff --git a/src/test/recovery/t/038_save_logical_slots_shutdown.pl b/src/test/recovery/t/038_save_logical_slots_shutdown.pl
index 05aa78b4bc7..c0392d50460 100644
--- a/src/test/recovery/t/038_save_logical_slots_shutdown.pl
+++ b/src/test/recovery/t/038_save_logical_slots_shutdown.pl
@@ -48,7 +48,6 @@ $node_publisher->append_conf(
'postgresql.conf', q{
checkpoint_timeout = 1h
autovacuum = off
-log_min_messages = 'debug1'
});
$node_publisher->start;
--
2.51.2
view thread (15+ messages) latest in thread
reply
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: [email protected]
Cc: [email protected], [email protected], [email protected], [email protected]
Subject: Re: pgsql: Reduce log level of some logical decoding messages from LOG to D
In-Reply-To: <CAHGQGwFXUcasXgcCKs18YVr8ZF8YyOcggcwvUm7h-J7KWgcwPQ@mail.gmail.com>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox