Re: make MaxBackends available in _PG_init
Tom Lane <tgl@sss.pgh.pa.us>
From: Tom Lane <tgl@sss.pgh.pa.us>
To: Robert Haas <robertmhaas@gmail.com>
Cc: Nathan Bossart <nathandbossart@gmail.com>,
Andres Freund <andres@anarazel.de>,
Julien Rouhaud <rjuju123@gmail.com>,
Michael Paquier <michael@paquier.xyz>,
"Bossart,
Nathan" <bossartn@amazon.com>,
Fujii Masao <masao.fujii@oss.nttdata.com>,
"wangsh.fnst@fujitsu.com" <wangsh.fnst@fujitsu.com>,
Bharath Rupireddy <bharath.rupireddyforpostgres@gmail.com>,
Greg Sabino Mullane <htamfids@gmail.com>,
"pgsql-hackers@lists.postgresql.org"
<pgsql-hackers@lists.postgresql.org>
Date: 2022-04-13T13:27:21Z
Lists: pgsql-hackers
Robert Haas <robertmhaas@gmail.com> writes: > Hmm. I suppose I was thinking that we'd go the other way around: move > the call to InitializeMaxBackends() earlier, as proposed previously, > and add a hook to allow extensions to get control before that point. > The reason that I like that approach is that I suspect that it's more > common for extensions to want to size shared memory data structures > than it is for them to want to change GUCs, and therefore I thought > that approach would fix things for the most amount of people with the > least amount of code change. But it seems like maybe Tom thinks I'm > incorrect about the relative frequency of those things, so I don't > know. Maybe I'm missing something, but I figured we'd keep the _PG_init calls where they are to minimize side-effects, and then add an optional hook just before/after shared memory size is determined. Cases that work well now continue to work well, and cases that don't work so well can be fixed by making use of the hook. In particular you can still do RequestAddinShmemSpace() in _PG_init as long as the request size doesn't depend on factors that other extensions might change. If you're doing something funny then you might need to postpone RequestAddinShmemSpace till the new hook call. regards, tom lane
Commits
-
Add a new shmem_request_hook hook.
- 4f2400cb3f10 15.0 landed
-
Remove non-functional code for unloading loadable modules.
- ab02d702ef08 15.0 landed
-
Fix misleading comments about background worker registration.
- 701d918a426b 15.0 landed
-
Revert the addition of GetMaxBackends() and related stuff.
- 7fc0e7de9fb8 15.0 landed
-
Fix typo in multixact.c
- 0147fc7c8c92 15.0 landed
-
Reduce more the number of calls to GetMaxBackends()
- 4567596316d1 15.0 landed
-
Remove MaxBackends variable in favor of GetMaxBackends() function.
- aa64f23b0292 15.0 landed
-
Fix comments about bgworker registration before MaxBackends initialization
- 5ecd0183fb6a 15.0 landed
-
Fix bogus assertion in BootstrapModeMain().
- e12694523e7e 15.0 cited
-
Make sure MaxBackends is always set
- dfbba2c86cc8 9.3.0 cited