From 8bbf8461a3a2a38ce5f2952a025385b6938a61f7 Mon Sep 17 00:00:00 2001 From: Michael Paquier Date: Wed, 11 May 2022 14:21:06 +0900 Subject: [PATCH] Silence extra logging when using "postgres -C" on runtime-computed GUCs Presently, the server may emit a variety of log messages when inspecting a runtime-computed GUC, mostly in the shape of one LOG message with the default configuration, related to the startup sequence launched as such GUCs require a load of the control file and of external shared libraries. For example, the server will always emit a "database system is shut down" LOG (unless the user has set log_min_messages higher than LOG), which is an annoying behavior as "postgres -C" is expected to only emit in its output the parameter value we are looking for. The parameter value is sent to stdout, while the logs are sent to stderr so we could recommend to use a redirection, but there was not much love for this workaround either. To avoid such extra log messages, per discussion, this change sets log_min_messages to FATAL internally when -C is used on a runtime-computed GUC (even if set to PANIC in postgresql.conf). At FATAL, the user will still receive messages explaining why a GUC value cannot be inspected, and will know if the command is attempted on a server already running, something not supported yet for a runtime-computed GUC. Reported-by: Magnus Hagander, Bruce Momjian Author: Nathan Bossart, Michael Paquier Discussion: https://postgr.es/m/Yni6ZHkGotUU+RSf@paquier.xyz --- doc/src/sgml/runtime.sgml | 2 +- src/backend/postmaster/postmaster.c | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/doc/src/sgml/runtime.sgml b/doc/src/sgml/runtime.sgml index 4465c876b18..62cec614d37 100644 --- a/doc/src/sgml/runtime.sgml +++ b/doc/src/sgml/runtime.sgml @@ -1448,7 +1448,7 @@ export PG_OOM_ADJUST_VALUE=0 server must be shut down to view this runtime-computed parameter. This might look like: -$ postgres -D $PGDATA -C shared_memory_size_in_huge_pages 2> /dev/null +$ postgres -D $PGDATA -C shared_memory_size_in_huge_pages 3170 $ grep ^Hugepagesize /proc/meminfo Hugepagesize: 2048 kB diff --git a/src/backend/postmaster/postmaster.c b/src/backend/postmaster/postmaster.c index ce4007bb2c7..8e61b3471ca 100644 --- a/src/backend/postmaster/postmaster.c +++ b/src/backend/postmaster/postmaster.c @@ -913,6 +913,16 @@ PostmasterMain(int argc, char *argv[]) puts(config_val ? config_val : ""); ExitPostmaster(0); } + + /* + * A runtime-computed GUC will be printed later on. As we initialize + * a server startup sequence, silence any log messages that may show + * up in the output generated. FATAL and more severe messages are + * useful to show, even if one would only expect at least PANIC. LOG + * entries are hidden. + */ + SetConfigOption("log_min_messages", "FATAL", PGC_INTERNAL, + PGC_S_OVERRIDE); } /* Verify that DataDir looks reasonable */