Re: make MaxBackends available in _PG_init
Robert Haas <robertmhaas@gmail.com>
From: Robert Haas <robertmhaas@gmail.com>
To: Andres Freund <andres@anarazel.de>
Cc: Julien Rouhaud <rjuju123@gmail.com>,
Michael Paquier <michael@paquier.xyz>, Nathan Bossart <nathandbossart@gmail.com>, "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>, Tom Lane <tgl@sss.pgh.pa.us>, "pgsql-hackers@lists.postgresql.org" <pgsql-hackers@lists.postgresql.org>
Date: 2022-03-29T16:22:21Z
Lists: pgsql-hackers
On Sat, Mar 26, 2022 at 1:23 PM Andres Freund <andres@anarazel.de> wrote: > > And indeed, any third party code that previously needed to access what > > MaxBackends is supposed to store should already be using that formula, and > > the new GetMaxBackends() doesn't do anything about it. > > It couldn't rely on MaxBackends before. It can't rely on GetMaxBackends() > now. You can see why I think that what you want is unrelated to the > introduction of GetMaxBackends(). It's not, though, because the original proposal was to change things around so that the value of MaxBackends would have been reliable in _PG_init(). If we'd done that, then extensions that are using it in _PG_init() would have gone from being buggy to being not-buggy. But since you advocated against that change, we instead committed something that caused them to go from being buggy to failing outright. That's pretty painful for people with such extensions. And IMHO, it's *much* more legitimate to want to size a data structure based on the value of MaxBackends than it is for extensions to override GUC values. If we can make the latter use case work in a sane way, OK, although I have my doubts about how sane it really is, but it can't be at the expense of telling extensions that have been (incorrectly) using MaxBackends in _PG_init() that we're throwing them under the bus. IMHO, the proper thing to do if certain GUC values are required for an extension to work is to put that information in the documentation and error out at an appropriate point if the user does not follow the directions. Then this issue does not arise. But there's no reasonable workaround for being unable to size data structures based on MaxBackends. -- Robert Haas EDB: http://www.enterprisedb.com
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