make MaxBackends available in _PG_init
Wang, Shenhao <wangsh.fnst@cn.fujitsu.com>
From: "Wang, Shenhao" <wangsh.fnst@cn.fujitsu.com>
To: "pgsql-hackers@lists.postgresql.org" <pgsql-hackers@lists.postgresql.org>
Date: 2020-09-21T03:43:41Z
Lists: pgsql-hackers
Attachments
- 0001-Make-MaxBackends-available-in-_PG_init.patch (application/octet-stream) patch 0001
Hi Hackers: I find the value in function _PG_init, the value of MaxBackends is 0. In source, I find that the postmaster will first load library, and then calculate the value of MaxBackends. In the old version, the MaxBackends was calculated by: MaxBackends = MaxConnections + autovacuum_max_workers + 1 + GetNumShmemAttachedBgworkers(); Because any extension can register workers which will affect the return value of GetNumShmemAttachedBgworkers. InitializeMaxBackends must be called after shared_preload_libraries. This is also mentioned in comments. Now, function GetNumShmemAttachedBgworkers was deleted and replaced by guc max_worker_processes, so if we changed the calling order like: Step1: calling InitializeMaxBackends. Step2: calling process_shared_preload_libraries In this order extension can get the correct value of MaxBackends in _PG_init. Any thoughts? Regards
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