On Thu, Jan 27, 2022 at 09:56:04AM +0900, Michael Paquier wrote: > Hmm. I have been looking at this patch, and the lack of centralized > solution that could be used for other GUCs worries me like Fujii-san, > even if this would prevent an incorrect use of MaxBackends in contexts > where it should not be used because it is not initialized yet. I > don't think it is a good idea in the long-term to apply this as-is.
Alright. I think the comment adjustments still apply, so I split those out to a new patch. -- Nathan Bossart Amazon Web Services: https://aws.amazon.com/
>From 4bc21dc199616824b8f5790e8112ebf149f45207 Mon Sep 17 00:00:00 2001 From: Nathan Bossart <bossa...@amazon.com> Date: Mon, 2 Aug 2021 17:42:25 +0000 Subject: [PATCH v7 1/1] Adjust comments about registering background workers before initializing MaxBackends. Since 6bc8ef0b, InitializeMaxBackends() has used max_worker_processes instead of tallying up the number of registered background workers, so background worker registration is no longer a prerequisite. The ordering of this logic is still useful for allowing libraries to adjust GUCs, so the comments have been updated to mention that use-case. --- src/backend/postmaster/postmaster.c | 10 ++++------ src/backend/utils/init/postinit.c | 5 ++--- 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/src/backend/postmaster/postmaster.c b/src/backend/postmaster/postmaster.c index dc4afdd75a..ac0ec0986a 100644 --- a/src/backend/postmaster/postmaster.c +++ b/src/backend/postmaster/postmaster.c @@ -1014,10 +1014,8 @@ PostmasterMain(int argc, char *argv[]) LocalProcessControlFile(false); /* - * Register the apply launcher. Since it registers a background worker, - * it needs to be called before InitializeMaxBackends(), and it's probably - * a good idea to call it before any modules had chance to take the - * background worker slots. + * Register the apply launcher. It's probably a good idea to call this + * before any modules had a chance to take the background worker slots. */ ApplyLauncherRegister(); @@ -1038,8 +1036,8 @@ PostmasterMain(int argc, char *argv[]) #endif /* - * Now that loadable modules have had their chance to register background - * workers, calculate MaxBackends. + * Now that loadable modules have had their chance to alter any GUCs, + * calculate MaxBackends. */ InitializeMaxBackends(); diff --git a/src/backend/utils/init/postinit.c b/src/backend/utils/init/postinit.c index d046caabd7..cd7c829ff5 100644 --- a/src/backend/utils/init/postinit.c +++ b/src/backend/utils/init/postinit.c @@ -483,9 +483,8 @@ pg_split_opts(char **argv, int *argcp, const char *optstr) /* * Initialize MaxBackends value from config options. * - * This must be called after modules have had the chance to register background - * workers in shared_preload_libraries, and before shared memory size is - * determined. + * This must be called after modules have had the chance to alter GUCs in + * shared_preload_libraries and before shared memory size is determined. * * Note that in EXEC_BACKEND environment, the value is passed down from * postmaster to subprocesses via BackendParameters in SubPostmasterMain; only -- 2.25.1